我有一个数据框,其中一列包含数字向量。我想根据涉及该列的条件过滤行。这是一个简化的示例。
df <- data.frame(id = LETTERS[1:3], name=c("Alice", "Bob", "Carol"))
mylist=list(c(1,2,3), c(4,5), c(1,3,4))
df$numvecs <- mylist
df
# id name numvecs
# 1 A Alice 1, 2, 3
# 2 B Bob 4, 5
# 3 C Carol 1, 3, 4
我可以使用诸如 mapply 之类的东西,例如
mapply(function(x,y) x=="B" & 4 %in% y, df$id, df$numvecs)
对于第二行正确返回 TRUE,对于第 1 行和第 2 行正确返回 FALSE。
但是,我有理由想使用 dplyr 过滤器而不是 mapply,但我无法让 dplyr 过滤器在 numvecs 列上正确运行。以下代码不返回两行,而是不返回任何行。
filter(df, 4 %in% numvecs)
# [1] id numvecs
# <0 rows> (or 0-length row.names)
我在这里缺少什么?如何过滤涉及 numvecs 列的条件表达式?
理想情况下,我也想使用非标准评估 filter_ ,这样我就可以将过滤条件作为参数传递。任何帮助表示赞赏。谢谢。