我正在使用%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也是众所周知的
答案 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