dplyr::如何在“过滤器”中使用SE和“%in%”?

dplyr::如何在“过滤器”中使用SE和“%in%”?,r,dplyr,R,Dplyr,考虑 df = data.frame(col1 = 1:3, col2 = 2:4) 我想做什么 df %>% filter(col1 %in% 2:3) 它应该返回第二行和第三行,但是col1作为字符串作为变量str_1=“col1” 所以我试过了 str_1 = "col1" df %>% filter(!!!str_1 %in% 2:3) df %>% filter(!!str_1 %in% 2:3) 尼瑟工作。这个的正确语法是

考虑

df = data.frame(col1 = 1:3, col2 = 2:4)
我想做什么

df %>%
  filter(col1 %in% 2:3)
它应该返回第二行和第三行,但是
col1
作为字符串作为变量
str_1=“col1”

所以我试过了

  str_1 = "col1"
  df %>% 
    filter(!!!str_1 %in% 2:3)

  df %>% 
    filter(!!str_1 %in% 2:3)

尼瑟工作。这个的正确语法是什么?还有什么更容易记住这些dplyr技巧的方法呢?

当您将列名作为字符串时,您可以在处使用
filter\u

library(dplyr)
df %>% filter_at(str_1, any_vars(. %in% 2:3))
#This seems to work as well
#df %>% filter_at(str_1, ~. %in% 2:3)

#  col1 col2
#1    2    3
#2    3    4

dplyr
中的
filter\u at
与所有其他
\u at
变体一样,具有一个
.vars
参数,该参数接受列名或位置的字符向量以应用函数

df%>%filter(!!sym(str_1)%in%2:3)
解释filter_的意思?@xiaodai添加了一些解释。