特定の条件の関数呼び出しで発生した回数を追跡する必要があるシミュレーションを実行しています。グローバルオブジェクトへの割り当てでこれを達成しようとしました。関数を実行すると機能しますが、私が行っているように関数を実行しようとすると、 fed tolapply
の各要素で発生するたびにカウントされるのではなく、条件が発生するすべての回数の単一のカウントが取得されます。list
lapply
これは、発生が数の偶数であるダミーの状況です。
FUN <- function(x){
lapply(1:length(x), function(i) {
y <- x[i]
if (y %% 2 == 0){
assign("count.occurrences", count.occurrences + 1, env=.GlobalEnv)
}
print("do something")
})
list(guy="x", count=count.occurrences)
}
#works as expected
count.occurrences <- 0
FUN(1:10)
count.occurrences <- 0
lapply(list(1:10, 1:3, 11:16, 9), FUN)
#gives me...
#> count.occurrences
#[1] 9
#I want...
#> count.occurrences
#[1] 5 1 3 0
シミュレーション中なので、速度が問題になります。私はこれをできるだけ速くしたいので、私はグローバルな割り当てのアイデアと結婚していません。