【发布时间】:2021-11-07 17:02:51
【问题描述】:
获取类似as.list(rep(c(NA, 4, NA), times = c(5, 1, 2))) 的列表,即
[[1]]
[1] NA
[[2]]
[1] NA
[[3]]
[1] NA
[[4]]
[1] NA
[[5]]
[1] NA
[[6]] # index of non-NA list element, 6
[1] 4 # ...and its corresponding value, 4
[[7]]
[1] NA
[[8]]
[1] NA
我想提取非NA元素的索引(这里:6),以及它对应的值(这里:4)。有没有什么惯用的方法可以得到这两个数字?
【问题讨论】:
-
每个列表元素是否总是长度为 1 的向量?
-
@Henrik 我很高兴同意。
-
好的,然后可能是
cbind(ix <- which(!is.na(l)), l[[ix]])(其他答案中已经使用了各个部分)。 -
@Henrik,即使现在可行,它也可能在未来失败,因为不能保证按顺序评估参数。为了安全起见,
ix<- ...部分应单独声明。