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

时间:2016-07-07 17:39:52

标签: r dplyr

我正在使用%in%进行%in%,但dplyr翻译查询的方式似乎不正确。实际上,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 运算符可以使用多个值,但是当只有一个元素存在时,它不会运行。 在我的原始场景中,过滤值是动态的,因此我希望有一个适用于这两种情况的函数。

{{1}}

我的问题是multiple selectInput values create unexpected dplyr (postgres) behavior的副本。似乎this issue也是众所周知的

2 个答案:

答案 0 :(得分:3)

我无法提供有关您的代码失败原因的任何见解。但是,除非有人能够提供更好的解决方案,否则这是一个简单的解决方案,它提供了“在两种情况下都能正常工作的功能”。

my.carriers <- c("UA","AA")
my.carriers <- c("UA")

if (length(my.carriers)>1) {
  tbl(my_db, "dplyr") %>% filter(carrier %in% my.carriers)
} else {
  tbl(my_db, "dplyr") %>% filter(carrier == my.carriers)
}

答案 1 :(得分:0)

汇总了一些建议,我方案的最佳方法可能是下面的建议。我之所以不想将false嵌套在num % 2语句中,是因为我有一个闪亮应用的菜单项中有多个filter()。因此,在源处操作变量可以节省大量的输入。

if

或者

filter