【发布时间】:2021-08-05 22:35:30
【问题描述】:
我需要使用 pracma 库中的 hasrsine 函数计算起点和终点坐标之间的距离。我打算像这样使用haversine函数:
distance <- haversine(c(start_lat,start_lng),c(end_lat,end_lng),R = 6371.0)
我需要对数据框中的所有可用记录执行此操作,并将其存储为同一数据框中称为距离的列。下面给出了一个示例数据框:
start_lat <- c(41.9359, 41.8604, 41.9359, 41.8969, 41.8708)
start_lng <- c(-87.6784, -87.6258, -87.6784, -87.6217, -87.625)
end_lat <- c(41.9493, 41.8708, 41.9171, 41.9080, 41.8708)
end_lng <- c(-87.6463, -87.6257, -87.7102, -87.6315, -87.6257)
df <- data.frame(start_lat = start_lat,
start_lng = start_lng,
end_lat = end_lat,
end_lng = end_lng)
我正在考虑使用 lapply 函数来完成这项工作。我对 R 很陌生,我无法完全理解如何实现这一目标。
我试过这样:
df$dsitance <- lapply(df,function(x){
start_coord <- x[c("start_lat","start_lng")]
end_coord <- x[c("end_lat","end_lng")]
dist <- haversine(start_coord ,end_coord , R= 6371.0)
return(dist)})
我正在努力从函数内的列中访问数据。任何帮助表示赞赏。
【问题讨论】:
标签: r dataframe coordinates lapply haversine