繰り返し処理にはforやapplyコマンドが便利ですが、痒いところに手が届かないことがあります。そんな、痒いところに手が届くかもしれないパッケージの紹介です。
パッケージのバージョンは1.5.2。実行コマンドはR version 4.2.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール install.packages("foreach")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み library("foreach") #指定回数繰り返す:foreachコマンド foreach(i = 1:3) %do% rnorm(4) [[1]] [1] -1.2070657 0.2774292 1.0844412 -2.3456977 [[2]] [1] 0.4291247 0.5060559 -0.5747400 -0.5466319 [[3]] [1] -0.5644520 -0.8900378 -0.4771927 -0.9983864 #結果出力の設定:.combineオプション #"c"を設定 foreach(i = 1:3, .combine = "c") %do% rnorm(4) [1] 0.20610310 -0.98109899 0.02649167 1.59199127 -0.18092395 -0.06898068 [7] -0.41337942 1.16898955 -0.07810419 -0.84305630 0.29913439 2.08036405 #"cbind"を設定 foreach(i = 1:3, .combine = "cbind") %do% rnorm(4) result.1 result.2 result.3 [1,] -0.7236902 -0.5324504 1.3881262 [2,] 0.7675323 -0.8125667 0.4483272 [3,] -0.6613460 0.2139257 -0.5543930 [4,] 0.4193643 0.6085379 -1.9703620 #"rbind"を設定 foreach(i = 1:3, .combine = "rbind") %do% rnorm(4) [,1] [,2] [,3] [,4] result.1 -0.007604756 1.7770844 -1.138607737 1.3678272 result.2 1.329564791 0.3364728 0.006892838 -0.4554687 result.3 -0.366523933 0.6482866 2.070270861 -0.1533984 #"+"を設定;結果を合計 foreach(i = 1:3, .combine = "+") %do% sum(i + 4) [1] 18 #"*"を設定;結果を乗算 foreach(i = 1:3, .combine = "*") %do% sum(i + 4) [1] 210 #こんな配列も作成できます foreach(a = 11:14, .combine = "cbind") %:% foreach(b = 21:24, .combine = "c") %do% { sum(a, b) } result.1 result.2 result.3 result.4 [1,] 32 33 34 35 [2,] 33 34 35 36 [3,] 34 35 36 37 [4,] 35 36 37 38 #途中にwhenコマンドを使用 #aが偶数のときのみbの値をaに加算 foreach(a = 11:14, .combine = "cbind") %:% foreach(b = 21:24, .combine = "c") %:% when(0 == a%%2) %do% { sum(a, b) } result.2 result.4 [1,] 33 35 [2,] 34 36 [3,] 35 37 [4,] 36 38
少しでも、あなたの解析が楽になりますように!!