我有两个数据帧df1,df2,包含经度(lon)和纬度(lat)值。 对于df1中的每一行,我想计算df2中每个条目的测地距离(以英里为单位),并返回距离小于30英里的条目数。
我现在所拥有的似乎有效,但速度极慢:
require(Imap)
n30 = function(lon,lat) {
d=apply(df2[,c("lon","lat")],1,FUN=function(x) {
gdist(lon,lat,x[1],x[2],units="miles")})
return(sum(d<=30,na.rm=T))
}
df1$n30 = apply(df1[,c("lon","lat")],1,FUN=function(x) n30(x[1],x[2]))
有人建议加快这个速度吗? 谢谢!