Rで解析:配列操作。matrixクラスの理解が進むかも?「ramify」パッケージ


投稿日: Rの解析に役に立つ記事

Rの代表的なクラスとしてmatrixがあります。data.frame同様に多く使われているデータ形式だと思います。ベクトルに比べ処理速度が劣る点もありますが、利用しやすい形式だと思います。そんな、matrix操作のコマンドが収められたパッケージの紹介です。

紹介する「ramify」パッケージはmatrixに関するコマンドを熟知していれば、「ふーん」で終わってしまいます。でも、解析を進めてから、コマンドを熟知するのもRを使いこなすのに必要だと思います。Rの敷居が下がることに期待して本パッケージを紹介します。

パッケージのバージョンは0.3.1。R version 3.2.1でコマンドを確認しています。


パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("ramify")

実行コマンドの紹介

詳細はコマンド、パッケージヘルプを確認してください。

#パッケージの読み込み
library("ramify")

###データ例の作成#####
TestData <- matrix(sample(1:300, 100), 10, 10)
########

#最大値,最小値の位置を表示:argmax,argminコマンド
#rowsオプション:TRUE;行に対して列で位置を示す
#最大値の位置を表示
argmax(TestData, rows = TRUE)
[1]  5 10  3  7  5  8  5  8  4  9
#最小値の位置を表示
argmin(TestData, rows = TRUE)
[1]  1  8  2  6  2  3 10  5  2  6

#文字列からマトリックスを作成:matコマンド
#行の区切りは;で指定します
#rowsオプション:TRUE;列方向に数値を入れ込み
mat("1, 1; 2, 1", rows = TRUE)
     [,1] [,2]
[1,]    1    1
[2,]    2    1

#マトリックスの結合:bmatコマンド
#行側に結合は;で指定します
TestMat <- mat(paste0(rep("0", 5), ","))
CTestMat <- mat(paste0(rep("1", 5), ","))
RTestMat <- mat(paste0(rep("2", 2), collapse = ","))
bmat("TestMat, CTestMat; RTestMat")
    [,1] [,2]
[1,]    0    1
[2,]    0    1
[3,]    0    1
[4,]    0    1
[5,]    0    1
[6,]    2    2

#文字列またはリストからデータフレームを作成:dmatコマンド
class(dmat(paste0(rep("0", 2), ",")))
[1] "data.frame"
  V1
1  0
2  0

#対角行列を作成:eyeコマンド
eye(nrow = 3, ncol = 4)
    [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    1    0    0
[3,]    0    0    1    0

#全成分を指定した内容のマトリックスを作成:fillコマンド
#他にfalses,trues,ones,zerosコマンドがあります
fill("あ", 3, 3)
    [,1] [,2] [,3]
[1,] "あ" "あ" "あ"
[2,] "あ" "あ" "あ"
[3,] "あ" "あ" "あ"

trues(3, 3)
    [,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE TRUE TRUE

zeros(3, 3)
    [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    0    0
[3,]    0    0    0

#ランダムな数字でマトリックスを作成:randコマンド
#他にrandi,randnコマンドがあります
rand(nrow = 3, ncol = 3, min = 10, max = 20)
     [,1]     [,2]     [,3]
[1,] 11.16685 12.31078 10.03573
[2,] 15.22607 10.08828 10.62518
[3,] 14.07603 11.81341 13.35422

#下三角行列のマトリックスを作成:trilコマンド
#上三角行列のtriuコマンドもあります
#diagオプション:TRUE;対角部分を1にする
tril(fill("あ", 3, 3), diag = FALSE)
    [,1] [,2] [,3]
[1,] "0"  "0"  "0" 
[2,] "あ" "0"  "0" 
[3,] "あ" "あ" "0"

#マトリックスの内容を省略してコンソールに表示:pprintコマンド
pprint(fill("あ", 10, 10))
10 x 10 matrix of characters: 
    [,1] [,2] [,3] ... [,10]
[1,]    あ   あ   あ ...    あ
[2,]    あ   あ   あ ...    あ
[3,]    あ   あ   あ ...    あ
...    ...  ...  ... ...   ...
[10,]   あ   あ   あ ...    あ

#マトリックスの行列サイズを変更:resizeコマンド
TestMT <- fill("あ", 4, 4)
TestMT
    [,1] [,2] [,3] [,4]
[1,] "あ" "あ" "あ" "あ"
[2,] "あ" "あ" "あ" "あ"
[3,] "あ" "あ" "あ" "あ"
[4,] "あ" "あ" "あ" "あ"
#サイズの変更
resize(TestMT, 2, 8)
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] "あ" "あ" "あ" "あ" "あ" "あ" "あ" "あ"
[2,] "あ" "あ" "あ" "あ" "あ" "あ" "あ" "あ"

#指定した範囲の等差数列を作成:linspaceコマンド
linspace(a = 1, b = 5, n = 6)
[1] 1.0 1.8 2.6 3.4 4.2 5.0
#同様のコマンドにlogspaceがあります
logspace(a = 1, b = 5, n = 6, base = 10)
[1]     10.00000     63.09573    398.10717   2511.88643  15848.93192 100000.00000

少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク