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
少しでも、あなたの解析が楽になりますように!!