r - 如何根据一个值过滤远程表?

标签 r dplyr

我正在使用 %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/

相关文章:

r - 如何使用 dplyr 在 R 中的数据库上动态创建新变量/列?

使用带有 dplyr 的数据框名称动态重命名

通过索引值将数据框中的值替换为另一个数据框中的值

r - 计算 R 中因子的出现次数,报告的计数为零

r - 计算R中每个组中每个类别的百分比

r - 分离(或类似的功能)具有多个或没有出现分割字符

R 计算日期范围之间每月发生的频率

r - 如何将 lm 对象存储在 R 的数据框中

r - 在 R 中按顺序查找起始索引和终止索引

r - 仅当列存在时才执行dplyr操作