在本地vs远程数据库上使用dplyr

时间:2016-02-04 02:40:31

标签: r dplyr dbplyr

我试图了解如何在远程数据库上使用dplyr与在R中存储的数据。但是,我不清楚mutate()可以使用哪些功能。例如,这很好用:

diamonds %>%
    select(color, cut, price) %>%
    mutate(
        newcol = paste0(cut, color)
)

但是,如果我尝试在远程数据库上使用paste()(太大而无法在本地存储),我会收到错误消息

Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  function paste0()

这是一个例子,但我在尝试使用POSIXct日期和非基础R的其他函数时发现了类似的错误。

我的问题:我是否仅限于使用非常基本的聚合函数,如提到的here?如果没有,如何通过远程数据库上的dplyr实现其他功能(自定义,附加库等)?

1 个答案:

答案 0 :(得分:1)

是的,dplyr使用dbplyr包进行SQL翻译。在其中,我们必须手动指定每个R命令如何转换为特定的SQL语法,因此在某些情况下,一个函数可能适用于一个数据库而不适用于其他数据库。我刚检查了PostgreSQL的翻译,看起来我们有paste()但不是paste0()的翻译。同时,您还可以在dplyr谓词内传递SQL命令,例如,mutate(m = strpos(field1, "search"))将运行PostgreSQL strpos,用于在字段中定位字符串。