[注、私はこの質問を書き、それから答えを見つけました。誰か他の人が知りたいと思ったので、念のために回答を投稿します。これが「やったこと」なのかわからない]。
ベクトルの符号付き距離行列が必要だとします。つまり、距離は常に正であるとは限りませんが、負になる可能性があります。使用できません
dist()
絶対値を返すからです。
適用を使用:
y<-seq(1:10)
distmat<-as.data.frame(apply(as.matrix(y),1,function(x) y-x))
distmat[upper.tri(distmat,diag=TRUE)]<-NA
これは、はるかに高速で必要なメモリが少ない別のアプローチです。
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