【发布时间】:2017-04-19 12:29:32
【问题描述】:
假设在 R 中我们有以下列表,称为 A:
A <- list();
for (i in c(1:1000)) {
A[[i]] <- list(sample(LETTERS, 1, T), runif(1, 1, 1000))
}
这样对于A 中的每个元素i,A[[i]][[1]] 将是一个随机分配的字母,A[[i]][[2]] 将是一个从 1 到 1000 的随机分配的数字。
既然如此,有没有办法(最好不使用循环)来确定 A 的哪些元素 j 包含第二个元素大于 500 的列表? IE。这样A[[j]][[2]] > 500?
如果我们使用数据帧,我们可以使用函数which。但我不知道如何使用列表列表来实现这一目标。
【问题讨论】:
-
如果您要为列表子集创建索引,您可以直接过滤:
Filter(function(x){x[[2]] > 500}, A)