7

我通常在 dplyr 中使用filterwith grepl,但在使用dbplyr. 我收到一个错误,即 grepl 不是一个可识别的函数。我的猜测是它无法转换为 SQL 服务器。有什么办法解决这个问题dbplyr

这是一个可重现的示例

library(dbplyr)
library(nycflights13)

## Working chunk
con <-DBI::dbConnect(RSQLite::SQLite(), ":memory:")
DBI::dbWriteTable(con, "flights", flights)
DBI::dbGetQuery(con, "SELECT origin, flight 
FROM flights WHERE origin like '%jf%'")
## End working chunk

## The below code does not work 
flights <- tbl(con,"flights")
flights %>% 
  select(origin, flight) %>% 
  filter(grepl('jf', origin))
4

3 回答 3

7

我发现这个答案的解决方案有效。

以下是适用于您的案例的代码:

dplyr::tbl(con, "flights") %>% 
    filter(origin %like% '%jf%') %>%
    collect()
于 2018-05-08T18:18:01.150 回答
2

我经常使用grepl管道来匹配多个值。postgresql如果你想匹配多个值similar to也可以:

dplyr::tbl(con, "flights") %>% 
    filter(origin %similar to% '(JF|LG)%') %>%
    collect()
于 2019-03-21T23:48:00.953 回答
1

我不确定你在问什么,但你尝试过任何at功能吗?

例如..

mtcars %>% mutate_at(vars(matches("cyl")), funs("123" = .+1))
于 2017-09-08T11:19:14.323 回答