7

有没有办法从 sqldf 查询中调用 R 函数?例如

sqldf("select paste('Hello', 'World')")

或者,有没有办法在 sqldf 后面的 SQLite 引擎中定义自定义函数或存储过程?(我正在使用带有普通旧内存 R 数据帧的 sqldf;我没有连接到任何实际的数据库。)

4

1 回答 1

13

1)现有功能首先确保您想要的功能不可用。例如,SQL 已经直接支持问题中的代码:

> sqldf("select 'Hello' || ' ' || 'world' ")
  'Hello' || ' ' || 'world'
1               Hello world

2) RSQLite.extfuns?initExtension One 包含 sqlite 版本的 SQL 中的所有 SQL 函数,以及 RSQLite 包 中列出的大量用户定义的函数。

3)其他可加载扩展 任何现有的sqlite可加载扩展中的函数都可以通过sqlite SQL函数加载load_extension()。例如看到这些扩展

4) 自定义函数 自定义函数可以添加到 SQLite 但它们必须用C编写。

5) PostgreSQL & sqldf sqldf 不仅支持 sqlite,还支持 h2、postgresql 和 mysql。postgresql 在这方面特别强大。请参阅postgresql 文档中的此链接 另请参阅Pl/RR Embedded Postgres 包

6) H2 & sqldf sqldf 支持H2数据库。就像 sqlite H2 包含在 RH2 驱动程序 R 包中一样,因此您不必安装单独的数据库;但是,您必须安装 Java。它有一个内置的 SHA256 哈希函数(称为哈希)。

7)混合sqldf & R sql和R可以这样混合:

library(digest)
transform(sqldf("select * from BOD"), digest = sapply(demand, digest))

8)其他 看到这个SO问题和答案

更新:添加了关于 H2 的信息。

于 2013-05-08T23:15:15.177 回答