m1、m2、m3、m4、m5、および m6 の半ダースのマトリックスがあります。簡単な例のために、次のように見えるとしましょう。
m1<- matrix(1:10, 2, 5)
m2<- matrix(11:20, 2, 5)
m3<- matrix(21:30, 2, 5)
m4<- matrix(31:40, 2, 5)
m5<- matrix(41:50, 2, 5)
m6<- matrix(51:60, 2, 5)
最終的に、関数を 6 つすべてに適用したいと思います。
f(m1,m2,m3,m4,m5,m6)
マトリックスの数はスクリプトを実行するたびに変わるため、これをプログラムで行う方法を探しています。私の最初の方法は、次の機能を実行することでした。
paste("m",1:6,sep="")
上記の式は文字列を返しました。
[1] "m1" "m2" "m3" "m4" "m5" "m6"
行列の名前ではなく値を見つけるために、次の関数を使用して、ミックスに「get」を追加してみました。
get(paste("m",1:6,sep=""))
しかし、「get」式は m1 の値のみを返し、必要なものはすべて無視しました。そこで、for ループをいじり始めました。
for(k in 1:6){
if(k == 1){b<- paste("m",k,sep="")}
else{b<- c(b, paste("m",k,sep=""))}
}
> b
[1] "m1" "m2" "m3" "m4" "m5" "m6"
これは、最初の試行で取得した文字列と同じです。その結果、次の式は失敗しました。
w<- f(b)
私も試しました:
w<- f(get(b))
ある程度予想通り、R は m1 を行列として認識しましたが、B の残りの項は無視しました。
私も試しました:
w<- f(get(b[1:6]))
これを行うと、上記と同じ結果が得られます。
最後に、 b をリストに変えてみました:
b<- list(m1,m2,m3,m4,m5,m6)
私は lapply(b, g) を使用したいと思っていましたが、lapply に配置すると関数 (私が書いたわけではなく、使用する義務があります) が正しく動作しません。
この一見単純なタスクをどのように達成できるかについて、他に何か考えはありますか? 私はまだRに比較的慣れていないので、私が知らないよく知られたアプローチがあるかもしれませんが、既存のドキュメントを検索しても何も見つかりませんでした。この小さい。その助けのためにフォーラムに乾杯.