如何将 dplyr 过滤器应用于数据框列表?

Posted

技术标签:

【中文标题】如何将 dplyr 过滤器应用于数据框列表?【英文标题】:How to apply dplyr filter to list of data frames? 【发布时间】:2017-08-10 13:23:41 【问题描述】:

我有一个list() 的数据框。我想将dplyrfilter() 应用于所有这些。

到目前为止我尝试过的示例代码...

require(dplyr)
list.DFs <- list(df1,df2)
lapply(
  X = list.DFS,
  FUN = filter(Gold.fish.count=="Total")
)

但这会报错:Object 'Gold.fish.count' not found

【问题讨论】:

也可以为此尝试 SE,例如 lapply(list.DFS, dplyr::filter_, "Gold.fish.count=='Total'") 或在基础 R lapply(list.DFS, subset, Gold.fish.count=='Total') 中完成整个操作 【参考方案1】:

使用purrr

library(purrr)
map(list.DFs, ~filter(.x, Gold.fish.count == "Total"))

显然,你可以用 lapply 做同样的事情:

lapply(list.DFs, function(x) filter(x, Gold.fish.count == "Total"))

【讨论】:

这个答案和 David Arenburg 在控制台中都向我展示了过滤后的数据集。但在这两种情况下,过滤后的数据框都不会保存到变量中。但这确实回答了所提出的问题。 要保存到变量,只需将variable &lt;-放在行首 我的意思是将每个更改的数据帧保存到存储它的变量中。 我不确定你的意思。如果您希望将过滤后的数据帧存储在分配给同一变量的列表中,只需覆盖原始列表变量即可。

以上是关于如何将 dplyr 过滤器应用于数据框列表?的主要内容,如果未能解决你的问题,请参考以下文章

将条件应用于列列表的数据框过滤

在 R dplyr 中过滤具有多个条件名称匹配的数据框

使用 OR 使用 dplyr 过滤数据框的更好方法?

在R中,如何使用dplyr按数据类型过滤数据帧?

在 Shiny 的反应函数中使用 dplyr 条件过滤器

将过滤器应用于列表并显示数据