Rで解析:配列操作が簡単です「ramify」パッケージ

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

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

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

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