【发布时间】:2026-02-23 18:25:01
【问题描述】:
我想在 R 中提取列表元素及其索引,同时删除长度为 0 的项目。假设我在 R 中有以下列表:
l1 <- character(0)
l2 <- c("a","b")
l3 <- c("c","d","e")
list1 <- list(l1, l1, l2, l1, l3)
然后list1 返回以下内容:
[[1]]
character(0)
[[2]]
character(0)
[[3]]
[1] "a" "b"
[[4]]
character(0)
[[5]]
[1] "c" "d" "e"
我想以某种方式提取一个对象,该对象显示每个非空元素的索引/位置,以及该元素的内容。所以看起来像这样:
[[3]]
[1] "a" "b"
[[5]]
[1] "c" "d" "e"
我最接近的方法是删除空元素,但随后我丢失了剩余元素的原始索引/位置:
list2 <- list1[lapply(list1, length) > 0]
list2
[[1]]
[1] "a" "b"
[[2]]
[1] "c" "d" "e"
【问题讨论】:
-
setNames(list1[lengths(list1) > 0], which(lengths(list1) > 0)) -
非常感谢!这是一个很好的简单命令,可以满足我的要求。