我正在使用 %in%
执行 filter()
但 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
我的问题与 multiple selectInput values create unexpected dplyr (postgres) behavior 重复。看起来像this issue也很有名
最佳答案
我无法对您的代码失败的原因提供任何见解。但在有人能够提供更好的解决方案之前,这里有一个简单的解决方法,它提供了“在两种情况下都有效的函数”。
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)
}
关于r - 如何根据一个值过滤远程表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38251927/