【发布时间】:2014-08-20 23:34:39
【问题描述】:
万事如意,
我有两组点数据,一组包含 24 个位置,另一组包含约 16,000 个位置。我想计算从 24 个点到 16,000 个点的距离。使用 R raster 包中的 pointDistance() 很容易做到这一点,但我不知道正在比较哪些对。我想创建一个 data.frame,其中包含每次比较的位置名称,以便我可以将它与距离结合起来。
a <- data.frame('lon' = c(1,5,55,31), 'lat' = c(3,7,20,22), 'loc' = c('a', 'b', 'c', 'd'))
b <- data.frame('lon' = c(4,2,8,65), 'lat' = c(50,-90,20,32), 'loc' = c('e', 'f', 'g', 'h'))
dist <- function(x, y){
for( i in 1:length(a$lon)){
my_vector <- vector(mode = "numeric", length = 0)
d <- pointDistance(cbind(x[i,'lon'], x[i,'lat']), cbind(y$lon, y$lat), lonlat=TRUE)
my_vector <- c(my_vector, d)
}
my_vector
}
我的早晨很慢,无法弄清楚为什么上面的函数没有输出每个组合。它不会将 d 的每次迭代添加到 my_vector。
同时我想包括产生每个距离测量的位置的成对组合,例如:
loc1 loc2 dist
a e 10
a f 16
a g 12
a h 19
b e 15
b f 17
b g 14
b h 13
c e 11
etc etc etc
很抱歉打扰您,任何帮助将不胜感激。
提前致谢。
亚当
【问题讨论】:
标签: r dataframe distance spatial