我有一个超过1000万行的数据框。 我想计算lat-lon对之间的距离,并将它们添加到nem列。 我试图运行脚本(见下文),但这需要太长时间(超过5小时)。 任何提示我怎样才能提高这个过程的速度?我使用geosphere包来计算lat-lon对之间的距离。
for (i in seq_len(nrow(dm_kekk)))
{
dm_kekk$dist[i]<-distm (c(dm_kekk$lon[i], dm_kekk$lat[i]),
c(dm_kekk$lon_ok[i], dm_kekk$lat_ok[i]),
fun = distHaversine)
}
感谢!!!
答案 0 :(得分:1)
总是举一些您的数据示例以及您希望更轻松地回答问题的输出。
一种选择是让您只是平行过程或尝试使用dplyr
mutate。
library(doParallel)
cores <- detectCores() -1
cl <- makeCluster(cores)
registerDoParallel(cl)
oper_dist <- foreach(i=1:seq_len(nrow(dm_kekk))) %dopar% {
library(geosphere)
distm (c(dm_kekk$lon[i], dm_kekk$lat[i]),
c(dm_kekk$lon_ok[i], dm_kekk$lat_ok[i]),
fun = distHaversine)
}
stopCluster(cl)
dm_kekk$dist <- do.call(c, oper_dist)
或使用mutate
library(dplyr)
dm_kekk %>% mutate(dist = distm(lon, lat, lon_ok, lat_ok, fun = distHaversine))