Rの代表的なクラスとして配列を示すmatrix classがあります。data.frame classと同様に多く使われているデータ形式です。ベクトルに比べ処理速度が劣る点もありますが、利用しやすい形式だと思います。そんな、配列操作のコマンドが収められたパッケージの紹介です。
パッケージのバージョンは0.3.3。windows11のR version 4.2.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("ramify")
実行コマンド
詳細はコマンド、パッケージヘルプを確認してください。
#パッケージの読み込み
library("ramify")
###データ例の作成#####
set.seed(1234)
TestData <- matrix(sample(1:300, 100), 10, 10)
########
#最大値,最小値の位置を表示:argmax,argminコマンド
#rowsオプション:TRUE;行に対して列で位置を示す
#最大値の位置を表示
argmax(TestData, rows = TRUE)
[1] 4 5 6 9 6 7 3 4 3 1
#最小値の位置を表示
argmin(TestData, rows = TRUE)
[1] 10 2 2 10 2 8 6 10 7 4
#文字列から配列を作成: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コマンド
dmat(paste0(rep("0", 2), ","))
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,] "あ" "あ" "あ"
#全成分をTRUEで作成:truesコマンド
trues(3, 3)
[,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE TRUE TRUE
#全成分を0で作成:zerosコマンド
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コマンドでサイズの変更
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があります
#logの底を指定:baseオプション
logspace(a = 1, b = 5, n = 6, base = 10)
[1] 10.00000 63.09573 398.10717 2511.88643 15848.93192 100000.00000
少しでも、あなたの解析が楽になりますように!!