考虑一下
li <- list(c(1,1,1), c(2,1,1), c(5,1,0))
## [[1]]
## [1] 1 1 1 <-- 0 modulo 3
##
## [[2]]
## [1] 2 1 1
##
## [[3]]
## [1] 5 1 0 <--- 0 modulo 3
我想保留列表中模3和等于零的所有项(或关于列表中项的其他逻辑表达式)。
密码
new <- list()
idx <- 1
for (i in seq_along(li) ) {
nxt <- li[[i]]
if ((sum(nxt) %% 3) == 0) {
new[idx] <- list(nxt)
idx <- idx + 1
}
}
## new
## [[1]]
## [1] 1 1 1
##
## [[2]]
## [1] 5 1 0
然而。我想要一个矢量化的解决方案。我试过了。
new <- subset(li, lapply(li, (sum %% 3) == 0 ))
但无济于事。
编辑有关详细信息,请参阅Difference between subset and filter from dplyr。
1条答案
按热度按时间3pmvbmvn1#
在碱R中:
整齐地