天地行列、対角行列、三角行列。Rではtコマンド(天地行列)、diagコマンド(対角行列)、lower.triまたはupper.tri(三角行列)を使用することで簡単に作成できます。詳細はコマンドの紹介を確認してください。
コマンドの紹介
tコマンド(天地行列)、diagコマンド(対角行列)、lower.triまたはupper.tri(三角行列)
#テストデータの作成
TestData <- matrix(rnorm(30), nrow = 10, ncol = 3)
TestData
[,1] [,2] [,3]
[1,] 0.72915863 -0.8053243 -0.83992774
[2,] 0.78738940 1.6400790 0.69412570
[3,] 0.56748370 -1.8935159 2.25140009
[4,] -0.07055114 0.6481270 -0.57941540
[5,] 0.97741282 1.1457485 -2.10721440
[6,] 0.19769231 0.2325746 1.21088069
[7,] 0.05780724 -1.4972576 -0.99663070
[8,] -0.39307496 -0.7719728 0.03476836
[9,] -0.02647294 -0.4169460 -1.29606402
[10,] 0.16835632 2.4906460 -0.31702261
#天地行列のtコマンド
t(TestData)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0.7291586 0.7873894 0.5674837 -0.07055114 0.9774128 0.1976923 0.05780724 -0.39307496 -0.02647294 0.1683563
[2,] -0.8053243 1.6400790 -1.8935159 0.64812699 1.1457485 0.2325746 -1.49725762 -0.77197278 -0.41694595 2.4906460
[3,] -0.8399277 0.6941257 2.2514001 -0.57941540 -2.1072144 1.2108807 -0.99663070 0.03476836 -1.29606402 -0.3170226
#対角行列のdiagコマンド
diag(1, 3, 4)
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 1 0 0
[3,] 0 0 1 0
#正方行列
diag(1, 3)
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
#単位行列
diag(10)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 0 0 0 0 0 0 0 0 0
[2,] 0 1 0 0 0 0 0 0 0 0
[3,] 0 0 1 0 0 0 0 0 0 0
[4,] 0 0 0 1 0 0 0 0 0 0
[5,] 0 0 0 0 1 0 0 0 0 0
[6,] 0 0 0 0 0 1 0 0 0 0
[7,] 0 0 0 0 0 0 1 0 0 0
[8,] 0 0 0 0 0 0 0 1 0 0
[9,] 0 0 0 0 0 0 0 0 1 0
[10,] 0 0 0 0 0 0 0 0 0 1
#三角行列の作成、対角部分を含めない場合はdiag = FALSE
lower.tri(diag(10), diag = TRUE) #上部の場合はupper.tri関数
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[2,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[3,] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[4,] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
[5,] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
[6,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
[7,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
[8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
[9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
[10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#一つの数字で三角行列を作成する
TestData <- matrix(0, 10, 10) #データの作成
TestData[lower.tri(TestData, diag = FALSE)] <- 1 #上部の場合はupper.tri関数、対角部分を含める場合はdiag = TRUE
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 0 0 0 0 0 0 0 0 0
[2,] 1 0 0 0 0 0 0 0 0 0
[3,] 1 1 0 0 0 0 0 0 0 0
[4,] 1 1 1 0 0 0 0 0 0 0
[5,] 1 1 1 1 0 0 0 0 0 0
[6,] 1 1 1 1 1 0 0 0 0 0
[7,] 1 1 1 1 1 1 0 0 0 0
[8,] 1 1 1 1 1 1 1 0 0 0
[9,] 1 1 1 1 1 1 1 1 0 0
[10,] 1 1 1 1 1 1 1 1 1 0
少しでも、あなたの解析が楽になりますように!!