1

[注、私はこの質問を書き、それから答えを見つけました。誰か他の人が知りたいと思ったので、念のために回答を投稿します。これが「やったこと」なのかわからない]。

ベクトルの符号付き距離行列が必要だとします。つまり、距離は常に正であるとは限りませんが、負になる可能性があります。使用できません

dist()

絶対値を返すからです。

4

2 に答える 2

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
于 2013-02-19T15:57:58.610 に答える
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
于 2013-02-19T16:55:18.523 に答える