R では<<-
、関数内でシンボルを使用しlapply()
て、外部の変数に値を割り当てることができますlapply()
。
1 でいっぱいの行列を考えてみましょう:
m<-matrix(data=1, nrow=5, ncol=5)
代入記号 を使用して、各行を値 1,2,3,4 および 5 に置き換えたいとしましょう<<-
。関数 lapply 関数を使用できます (そのような操作用に設計された関数ではありません。これは単なる例です)。
lapply(X = seq(nrow(m)), FUN = function(r){
m[r,]<<-seq(5)
})
これは機能します。
しかし、mclapply を次のように使用すると、次のようになります。
mclapply(X = seq(nrow(m)), FUN = function(r){
m[r,]<<-seq(5)
})
行列 m は 1 のままです。
アイデアは、マトリックスの行に変更を適用し、新しい行を作成するのではなく、既存の行に割り当てることです。唯一の制約は、parallel パッケージの関数を使用することです (例: mclapply() ですが、別の関数の方が適切かもしれません)。
また、<<-
記号の使用は必須ではありません。
どうやってやるの ?