如何从R列表中筛选仅含1行且值为1的data.frame元素?
从列表中筛选符合特定条件的元素
你可以用R的基础函数Filter()直接实现这个需求,结合两个判断条件:数据框仅含1行,且该行的CNT列值等于1。
步骤示例:
- 先定义你的原始列表:
asd <- list(colb = structure(list(CNT = 1:3), class = "data.frame", row.names = c(NA,3L)), cola = structure(list(CNT = 1L), class = "data.frame", row.names = 1L), colc = structure(list(CNT = 2L), class = "data.frame", row.names = 2L))
- 执行筛选:
# 筛选满足双条件的列表元素 target_elements <- Filter(function(x) nrow(x) == 1 && x$CNT == 1, asd)
执行后target_elements里就只有cola这个符合条件的元素了。
补充:用tidyverse工具实现
如果你习惯用tidyverse生态的purrr包,也可以用keep()函数,语法更简洁:
library(purrr) target_elements <- keep(asd, ~ nrow(.x) == 1 && .x$CNT == 1)
两种方法的效果完全一致,选你顺手的用就行。
内容的提问来源于stack exchange,提问作者mapvin vin
相关产品推荐
相关产品推荐

