【发布时间】:2019-10-23 08:57:11
【问题描述】:
我有一个包含多个数据框的列表,我想通过每个数据框的一列中的某些值过滤列表中的这些数据框。列表中的每个数据框都有一个名为 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)
有人帮忙
【问题讨论】:
-
你快到了。您的匿名函数必须返回您想要的,即 data.frame。
idx中有什么内容?我假设它是你的目标,即idx <- "++"。表达式x$v1 %in% idx是一个逻辑(布尔)向量,您可以使用它来对data.frame 进行子集化。 df 是x[x$v1 %in% idx,]。 -
@antoine-sac 我收到此错误 *x$v1 中的错误:$ 运算符对原子向量无效 *