以 R 中的元素数量为条件删除列表

Delete list conditional on the number of elements in R

我有一个列表 L 未命名的逗号分隔字符列表。每个字符列表的长度不等。我需要从 L 中删除少于 4 个元素的字符列表。如何才能做到这一点?例子 L:

> L
[[1]]
[1] "A" "B" "C" "D"
[[2]]
[1] "E" "F" "G" 

在上面的例子中,我想结束:

> L
[[1]]
[1] "A" "B" "C" "D"

我们可以使用 lengths 获取 list 元素的 length 作为 vector,基于此创建逻辑向量并对 [=15] 进行子集化=]

L[lengths(L)>3]
#[[1]]
#[1] "A" "B" "C" "D"

一种优化程度较低的方法(之前使用过)是使用 sapply 遍历 list 元素,获取 length 并将其用于子集

L[sapply(L, length)>3]

数据

L <- list(LETTERS[1:4], LETTERS[5:7])