我有一个超过1000万行的数据框架。我想计算拉链对之间的距离,然后将它们添加到NEM列中。我试图运行脚本(见下文),但需要太长(超过5个小时)。任何提示如何提高此过程的速度?我使用地质包装来计数拉链对之间的距离。
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)
}
谢谢!
始终为您的数据提供一些示例,以及您期望使回答问题更容易的输出。一种选择是让您仅平行该过程或尝试使用dplyr
突变。
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))