我正在运行一个模拟,我需要跟踪特定条件的函数调用中出现的次数。我试图通过分配一个全局对象来实现这一点。如果您运行该函数,它会起作用,但如果您像我一样尝试lapply
该函数,那么您将获得条件发生的所有时间的单一计数,而不是每次发生的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
它在模拟中,所以速度是一个问题。我希望这尽可能快,所以我不接受全球任务的想法。