【发布时间】:2015-04-26 21:15:21
【问题描述】:
首先,请原谅我的标题不好。我仍然对这种行为感到困惑,以至于我无法描述它;但是我能够重现它并将其分解为一个(愚蠢的)示例。
请你好心解释一下为什么在调用lapply()之后other.list似乎充满了NULLs?
some.list <- rep(list(rnorm(1)),33)
other.list <- rep(list(), length = 33)
lapply(seq_along(some.list), function(i, other.list) {
other.list[[i]] <- some.list[[i]]
browser()
}, other.list)
我在 RStudio 的调试模式下观看了这个。对于某些i,other.list[[i]] 被分配了some.list[[i]],但在下一次迭代中它将为空。我想了解这种行为太糟糕了!
【问题讨论】:
-
因为......您没有将函数调用的结果分配给命名项“其他 .list”。 (并且函数内部的“other.list”也没有真正累积结果)。下面提供的超级任务不是经验丰富的 R 用户处理数据对象的常用方法。通常的范例(假设您对函数的行为非常有信心)是
other.list <- lapply(seq_along(some.list), <function-call> , some.list)。这是一种有点啰嗦的说法:other.list <- lapply(some.list, <function-call_with_no_seq_param> )
标签: r null scope environment-variables lapply