如何使用%in%operator动态过滤?

时间:2016-07-06 17:57:58

标签: r dplyr

我想根据向量iris的值,使用%in%运算符过滤fl <- c("virginica","setosa")

我换句话说,就像

tbl_df(iris) %>% 
  filter_('Species %in% c("virginica","setosa")')

但由于此代码将放入闪亮的应用中并且动态生成fl,因此我需要将fl传递到我之前的脚本中,而不是手动输入值。

1 个答案:

答案 0 :(得分:0)

编辑:我根据评论取消删除此操作,当从SQL中提取时,您必须使用filter_功能,否则它会中断。\ n&#39;一个单独的问题,也许是你的代码中的一个错误,但也许这种解决方法让你完成所需的工作。@ alistaire的评论效果更好,但如果你需要像我一样动态选择一个列最初错误推断,那么你需要这样的东西。缺乏这个,这不是一个扩展的答案。)

如下所示:https://stackoverflow.com/a/26509961/3358272,而不是%in%

cn <- "Species"
fl <- c("virginica", "setosa")
filt <- lazyeval::interp(~ col %in% fl, col = as.name(cn))
tbl_df(iris) %>% filter_(filt)
# Source: local data frame [100 x 5]
#    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#           <dbl>       <dbl>        <dbl>       <dbl>  <fctr>
# 1           5.1         3.5          1.4         0.2  setosa
# 2           4.9         3.0          1.4         0.2  setosa
# 3           4.7         3.2          1.3         0.2  setosa
# 4           4.6         3.1          1.5         0.2  setosa
# 5           5.0         3.6          1.4         0.2  setosa
# ..          ...         ...          ...         ...     ...