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

CHR*_*HRD 3 conditional r list character lapply

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

> L
[[1]]
[1] "A" "B" "C" "D"
[[2]]
[1] "E" "F" "G" 
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想最终得到:

> L
[[1]]
[1] "A" "B" "C" "D"
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们可以用lengths得到length的的list元素作为vector,创建基于该逻辑向量和子集list

L[lengths(L)>3]
#[[1]]
#[1] "A" "B" "C" "D"
Run Code Online (Sandbox Code Playgroud)

一种不太优化的方法(之前使用过)是使用 循环遍历list元素sapply,获取length并使用它来子集

L[sapply(L, length)>3]
Run Code Online (Sandbox Code Playgroud)

数据

L <- list(LETTERS[1:4], LETTERS[5:7])
Run Code Online (Sandbox Code Playgroud)