中的R符号距离矩阵(Signed distance matrix in R)

2019-10-17 17:07发布

[注意,我写了这个问题,于是找到了答案。 我想也许别人想知道的话,所以我的情况下,只是发表了答案。 我不知道这是否是“做事情”。

假设我想一个向量的符号距离矩阵,即距离的并不总是积极的,但也可以是负的。 您不能使用

DIST()

因为它返回的绝对值。

Answer 1:

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

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


Answer 2:

使用应用:

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


文章来源: Signed distance matrix in R