【发布时间】:2020-07-10 06:13:50
【问题描述】:
我需要在activation_status 列表t 上运行函数lapply,以便函数的t 迭代记住t-1 迭代的结果。
该列表基本上是一个二维数组,表示多个 t 期间的单个项目 i 状态,如下所示:
n_items <<- 100
n_iterations <<- 10
activation_status <-
lapply(1:n_iterations,
FUN = function(t, bool, i) rep(bool, t),
FALSE, n_items)
现在在每次迭代 t 期间,我随机激活(设置为 TRUE)列表中的一些项目,但我希望在时间 t-1 已激活的所有项目保持活动状态(请注意,我在 update 函数中定义 activation_status 以便它可以在内部函数中访问)。
updateActivation <- function(t) {
activation_status[[t]] <- as.logical(rbinom(n_items, 1, prob = .5))
activation_status[[t]][activation_status[[t-1]] == TRUE] <- TRUE
}
然后
lapply(1:n_iterations, updateActivation)
抛出错误:
activation_status[[t - 1]] 中的错误:尝试在 get1index 中选择少于一个元素
我知道我可以使用循环,但我想知道是不是这样:
- 可以用
apply函数做这样的事情吗? - 做得更快?
【问题讨论】: