4

我试图了解如何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 的其他函数时,我注意到了一个类似的错误。

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

4

1 回答 1

1

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

于 2017-10-04T02:16:39.670 回答