在 R 中,我有一个简单的 for 循环,里面有一个函数。它需要一个数据框并直接查看之前的行以找到距离,然后填充 dist 列。一切正常,但运行超过 120,000 行(超过 5 分钟)需要很长时间。非常感谢找到一种(可能是矢量化的)方法来加速此功能。只是为了全面披露,我之前问过一个类似的问题,但我需要的参数最终发生了变化,我无法使这个答案适应新的变化。
样本数据:
lat <- c(32.88084254, 32.88058801, 32.88034199, 32.88027623, 32.88022759)
lon <- c(-117.23543042, -117.23606292, -117.23654377, -117.23723468, -117.23788206)
tripData <- data.frame(cbind(lat, lon))
tripData["dists"] <- NA
for (i in 2:nrow(tripData)) {
tripData$dists[i] <- geodist(tripData[i, c("lat")],
tripData[i, c("lon")],
tripData[i-1, c("lat")],
tripData[i-1, c("lon")],
units="km")*1000
}