rdist
在计算出 x 和 y 坐标的两个向量之间所有欧几里得距离的矩阵方面做得很好。
但是,rdist
如果您只需要一些比较,想要比较所有可以提供超出您需要的输出的东西。例如
df <- data.frame(x1=c(0,0),y1=c(0,0),x2=c(0,2),y2=c(0,0))
# df
# x1 y1 x2 y2
# 1 0 0 0 0
# 2 0 0 2 0
# where (x1,y1) are vectors for the first points and (x2,y2) are
# vectors for the second points. We want distances between points 1 and
# points 2 for each row
如果我们只想与同一行的那个谎言进行比较x1,y1
,x2,y2
那么下面的方法是一个杀手:
library(fields)
rdist(cbind(c(df[,1],df[,3]),c(df[,2],df[,4])))
所以我的问题是实现这一目标的最佳方法是什么?我能想到:
library(fields)
df <- data.frame(x1=c(0,0,0,5),y1=c(0,0,0,3),x2=c(0,2,3,6),y2=c(0,0,0,9))
results <- apply(df,1,function(x) rdist(cbind( c(x[1],x[3]),c(x[2],x[4]))))
然后从我的距离偷走第二排或第三排results
...