如何在R中筛选嵌套列表内的所有dataframe(y<1)
保留嵌套列表结构筛选DataFrame行
你可以通过嵌套映射的方式,在保留原列表层级结构的同时,对每个DataFrame执行y < 1的行筛选操作,以下是两种可行实现方式:
方法1:使用tidyverse工具(purrr + dplyr)
先加载所需的包,再通过两层map函数遍历嵌套列表的每一层,对每个DataFrame应用filter筛选:
library(dplyr) library(purrr) # 执行筛选并保留嵌套结构 l_filtered <- map(l_all, ~map(.x, ~filter(.x, y < 1))) # 查看筛选后的结果 l_filtered
运行后输出结果与你期望的一致:
[[1]] [[1]][[1]] [1] x y <0 rows> (or 0-length row.names) [[1]][[2]] x y 1 0 0 [[2]] [[2]][[1]] x y 1 7 -1 [[2]][[2]] x y 1 4 0
方法2:基础R实现
如果不想依赖tidyverse包,可以用两层lapply完成相同操作:
# 基础R版本的筛选逻辑 l_filtered_base <- lapply(l_all, function(year_group) { lapply(year_group, function(df) { df[df$y < 1, ] }) }) # 查看结果 l_filtered_base
该方法同样会保留原嵌套结构,输出结果与tidyverse版本完全一致。
内容的提问来源于stack exchange,提问作者abrar
相关产品推荐
相关产品推荐

