R中的有符号距离矩阵

时间:2013-02-19 15:57:59

标签: r matrix distance

[注意,我写出了这个问题,然后找到答案。我想也许其他人想知道它,所以我发布答案以防万一。我不确定这是否是“完成的事情”]。

假设我想要一个向量的带符号距离矩阵,即距离不总是正的,但可以是负的。你不能使用

  

DIST()

因为它返回绝对值。

2 个答案:

答案 0 :(得分:2)

这是另一种方法,它更快,需要更少的内存:

y <- sample (1 : 4)
distmat <- outer (y, y, `-`) 

的产率:

> distmat
     [,1] [,2] [,3] [,4]  
[1,]    0    1    3    2  
[2,]   -1    0    2    1  
[3,]   -3   -2    0   -1  
[4,]   -2   -1    1    0

## not sure why you want the upper triangular NA
distmat[upper.tri(distmat,diag=TRUE)]<-NA

但你可能想要:

> as.dist (distmat)
   1  2  3
2 -1      
3 -3 -2   
4 -2 -1  1

答案 1 :(得分:1)

使用apply:

y<-seq(1:10)
distmat<-as.data.frame(apply(as.matrix(y),1,function(x) y-x))
distmat[upper.tri(distmat,diag=TRUE)]<-NA