上三角行列のデータから対象行列を作る

MDSを実際のデータでやってみよう,という演習をした時の話。

学生には距離行列をmatrix型で全部入れさせたんだけど,自分でやる時は効率が悪いなあとおもっちゃう。だって,対象行列だもん。

上三角分のデータだけ入れたら,対角は0なんだし,自動的に対象行列にしてくれるように関数を書きたいなあ,とおもって書きました。たいしたことはない関数ですが,どこかにニーズがあるかもしれないのでさらしておきます。

 

> dist.mat <- function(x,N){
+ M <- matrix(NA,N,N)
+ M[upper.tri(M)] <- 0
+ M[lower.tri(M)] <- x
+ M <- M+t(M)
+ diag(M) <- 0
+ return(M)
+ }
>
> # 1,2,3,4,5,6のベクトルを与えて,4×4の行列を作る
> dist.mat(1:6,4)
[,1] [,2] [,3] [,4]
[1,] 0 1 2 3
[2,] 1 0 4 5
[3,] 2 4 0 6
[4,] 3 5 6 0

 

ちなみに,青木先生のページにも同様の関数があるんだけど,これは対角にもデータが入っちゃうのでちょっと今回の狙いとは違う。
一応,ご参考までに>>三角行列の要素を与えて対象行列を作る

R
ベイズ塾合宿2019参戦

今年も塾合宿の季節がやってまいりました。会場は浜松!   史上最大規模の,33人が参加。二 …

分類できない何か
日本心理学会の引用スタイルjecon_jpa.styを作った

PDFが静的でリッチではないフォーマットだ,という意見はよくわかるけど,記録として残るものは静的であ …

日記
文字数

小学生の頃の作文の授業。「たくさん書けば書くほど良い」というルールだった(と勘違いした)ので、遠足の …