Rでウェブ解析:天地行列と対角行列と三角行列の作成コマンドの紹介

Rの解析に役に立つ記事
スポンサーリンク

天地行列、対角行列、三角行列。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

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました