【发布时间】:2019-07-13 12:32:57
【问题描述】:
我在 R 中有一个列表列表。我想删除长度为零的列表。
到目前为止我尝试过的是:
for (i in 1:length(test)) {
keep <- rep(T, length(test))
for (j in 1:length(test[[i]])) {
if (length(test[[i]][[j]]) == 0) {
keep[[j]] <- F
}
}
test2[i] <- test2[i][keep]
}
这是一些示例数据(已编辑):
test <- list("Section 1" = list("A" = list(), "B" = list("1x1" = "23", "1x2" = "24"), C = list("2x1" = "78")),
"Section 2" = list("A" = list(), "B" = list("1x1" = "23", "1x2" = "24"), C = list("2x1" = "78")))
我想要一种方法来删除第 1 节和第 2 节中的“A”列表,因为它们的长度都是 0
【问题讨论】:
-
我认为这是链接帖子的副本。我不能 100% 确定,因为您不提供示例数据(屏幕截图对于共享数据来说总是一个坏主意)。如果来自欺骗目标的解决方案不能解决您的问题,请澄清您的帖子,包括示例数据,我很乐意重新打开。
-
@MauritsEvers 我添加了一些示例数据,谢谢
-
Filter(function(x) length(x) > 0, test)适用于您提供的示例数据。 -
@MauritsEvers,不需要匿名函数:
Filter(length, test)
标签: r