Rを通じて統計学を学ぶ備忘録ブログ

SPSSからRに移行したい私のような人向けのR解説ブログ兼学習用備忘録。

第5回 行列の作成

第5回は行列(matrix)の計算について書きます。

簡単にいうと、行列は縦横にデータの値を並べたものです。統計解析では、横に変数(n個)、縦に人(p個)を配置したデータセット(n×p個)が利用しますが、これも行列として見れます。さっそく動かしてみましょう。matrix()関数を使って行列を作成します。matrix(要素、列数、行数)を指定し、ここでは1〜15までの3行5列の行列を作ります。

> matrix(1:15,nrow=3,ncol=5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    4    7   10   13
[2,]    2    5    8   11   14
[3,]    3    6    9   12   15

デフォルトでは列方向に数値を配置していきますが、byrow=TRUEをお尻につけると、行方向に優先で数値を配置できます。

> matrix(1:15,nrow=3,ncol=5,byrow=TRUE)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15

10×10の行列は、以下の通りです

> matrix(1:100,10,10)
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1   11   21   31   41   51   61   71   81    91
 [2,]    2   12   22   32   42   52   62   72   82    92
 [3,]    3   13   23   33   43   53   63   73   83    93
 [4,]    4   14   24   34   44   54   64   74   84    94
 [5,]    5   15   25   35   45   55   65   75   85    95
 [6,]    6   16   26   36   46   56   66   76   86    96
 [7,]    7   17   27   37   47   57   67   77   87    97
 [8,]    8   18   28   38   48   58   68   78   88    98
 [9,]    9   19   29   39   49   59   69   79   89    99
[10,]   10   20   30   40   50   60   70   80   90   100

cbind関数を利用して、ベクトルを追加して行列を作ってみる。複数のベクトルデータを列方向に順次追加してくれるのが、cbind()関数です。

> vector1 <- c(1:5)
> vector1
[1] 1 2 3 4 5
> vector2 <- seq(2,10,2)
> vector2
[1] 1 2 3 4 5
> cbind(vector1,vector2)
     vector1 vector2
[1,]       1       1
[2,]       2       2
[3,]       3       3
[4,]       4       4
[5,]       5       5

rbind関数を利用して、ベクトルを追加して行列を作ってみる。複数のベクトルデータを行方向に順次追加してくれるのが、rbind関数です。

> rbind(vector1,vector2)
        [,1] [,2] [,3] [,4] [,5]
vector1    1    2    3    4    5
vector2    1    2    3    4    5

最後に行列にラベリングしていきましょう。

> rownames(matrix1) <- c("行1","行2","行3")
> colnames(matrix1) <- c("列1","列2","列3","列4")
> matrix1
    列1 列2 列3 列4
行1   1   2   3   4
行2   5   6   7   8
行3   9  10  11  12

実際は、データセットを作業ディレクトリから読み込むので、ベクトルを作成して、行列を作成することはあまりありませんが備忘録兼基本的な操作です。

関数おさらい                         
cbind():ベクトルを列方向に追加していく             
rbind():ベクトルを行方向に追加していく         
colnames():ベクトルを列方向に名前をつける        
rownames():ベクトルを行方向に名前をつける              
matrix():(要素、行、列)を指定して行列を作成

第6回は以上でお終い。

広告を非表示にする