本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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

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

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

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.