如何根据单个值过滤远程表?

Dam*_*mbo 6 r dplyr

我正在filter()使用%in%但dplyr翻译查询的方式似乎不正确.实际上,%in%运算符可以使用多个值正常工作,但只有单个元素存在时才会运行.在我的原始场景中,过滤值是动态的,因此我希望有一个在两种情况下都有效的函数.

my_db <- src_mysql(dbname = "dplyr", 
                   host = "dplyr.csrrinzqubik.us-east-1.rds.amazonaws.com", 
                   port = 3306, 
                   user = "dplyr",
                   password = "dplyr")
tbl(my_db, "dplyr") %>% filter(carrier %in% c("UA","AA")) #works
tbl(my_db, "dplyr") %>% filter(carrier %in% c("UA")) #doesn't work
Run Code Online (Sandbox Code Playgroud)

我的问题是多个selectInput值的重复创建意外的dplyr(postgres)行为.似乎这个问题也是众所周知的

Dam*_*mbo 0

将一些建议放在一起,适合我的场景的最佳方法可能是下面的方法。filter()我不喜欢将 嵌套在语句中的原因if是我有多个filter闪亮应用程序的菜单项。因此,在源头操作变量可以节省我大量的打字时间。

a <- c("UA")
b <- if(length(a)>1) a else c(a,"")
tbl(my_db, "dplyr") %>% 
  filter(carrier %in% b)
Run Code Online (Sandbox Code Playgroud)

或者

 a <- c("UA")
 varToFilterFor <- rep(a ,2)
tbl(my_db, "dplyr") %>% 
      filter(carrier %in% varToFilterFor)
Run Code Online (Sandbox Code Playgroud)