我通常在dplyr中使用filter
和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))
答案 0 :(得分:1)
我不确定你问的是什么,但是你尝试过任何at
功能吗?
例如..
mtcars %>% mutate_at(vars(matches("cyl")), funs("123" = .+1))
答案 1 :(得分:1)
我发现this answer的解决方案有效。
以下是适合您案例的代码:
dplyr::tbl(con, "flights") %>%
filter(origin %like% '%jf%') %>%
collect()
答案 2 :(得分:0)
我经常将grepl
与管道配合使用以匹配多个值。对于postgresql
,如果要匹配多个值,similar to
也可以:
dplyr::tbl(con, "flights") %>%
filter(origin %similar to% '(JF|LG)%') %>%
collect()