删除列表中奇数长度的元素

Bas*_*sil 2 filtering r list

我有一个列表,我想删除具有奇数长度的元素:

my_list <- list()
my_list$a <- c(1,2,3,4) #length 4
my_list$b <- c(1,2,3) # length 3
my_list$c <- c(5,6,7,8,6,7) #length 6
Run Code Online (Sandbox Code Playgroud)

所以在上面的例子中,我想删除, my_list$b 因为它的长度是3,而3是奇数。

有什么建议么?

Cet*_*ttt 5

您可以使用sapply、实现子集化和模运算符%%

my_list[sapply(my_list, length) %% 2L == 0L]
Run Code Online (Sandbox Code Playgroud)

或者按照评论中的建议更好lengths

my_list[lengths(my_list) %% 2L == 0L]
Run Code Online (Sandbox Code Playgroud)

  • 您可以将 `sapply(..)` 更改为 `lengths(my_list)` (7认同)

Maë*_*aël 5

Filter

Filter(\(x) length(x) %% 2 == 0, my_list)
Run Code Online (Sandbox Code Playgroud)