首页 > 解决方案 > 根据数据框列表中的一列过滤行

问题描述

我有一个包含多个数据框的列表,我想通过每个数据框的一列中的某些值过滤列表中的这些数据框。列表中的每个数据框都有一个名为v1的列,该列具有特殊字符++、->,现在我确实只想过滤列表中每个数据框中具有此箭头 (->)的行。这是我的数据框示例,

dput(df)
df1 <- structure(list(v1 = c("->", "++", "->"),
                      t2 = c("James","Jane", "Egg")),
                 class = "data.frame", row.names = c(NA,  -3L))

dput(df2)
df2 <- structure(list(v1 = c("++", "->", "->"),
                      t2 = c("James","Jane", "Egg")),
                 class = "data.frame", row.names = c(NA,  -3L))
dput(df3)
df3 <- structure(list(v1 = c("++", "++", "->"),
                      t2 = c("James","Jane", "Egg"),
                      d3...c = c("James","Jane", "Egg")),
                 class = "data.frame", row.names = c(NA,  -3L))

我已经尝试过了,但我没有得到过滤行的数据框

idx = "->"
dfs <- list(df1,df2,df3)
lapply(dfs, function(x) x$v1 %in% idx)

有人帮助

标签: rdataframe

解决方案


idx <- "->"

# Base R
lapply(dfs, function(df) df[df$v1 == "->",])
lapply(dfs, function(df) df[df$v1 %in% idx,])

# tidyverse

library("purrr")
library("dplyr")

map(dfs, filter, v1 == "->")
map(dfs, filter, v1 %in% !! idx)


推荐阅读