有没有办法从 sqldf 查询中调用 R 函数?例如
sqldf("select paste('Hello', 'World')")
或者,有没有办法在 sqldf 背后的 SQLite 引擎中定义自定义函数或存储过程? (我将 sqldf 与普通的旧内存中 R 数据帧一起使用;我没有连接到任何实际的数据库。)
最佳答案
1) 现有功能 首先确保您想要的功能尚不可用。例如,SQL 已经直接支持问题中的代码:
> sqldf("select 'Hello' || ' ' || 'world' ")
'Hello' || ' ' || 'world'
1 Hello world
2) RSQLite.extfuns 一个具有 sqlite 版本的 SQL 中的所有 SQL 函数以及 ?initExtension
中列出的大量开箱即用的用户定义函数RSQLite 包。
3) 其他可加载扩展 任何现有 sqlite 可加载扩展中的函数都可以通过 sqlite SQL 函数 load_extension()
加载。例如见these extensions
4) 自定义函数 自定义函数可以添加到 SQLite 但必须写成 in C .
5) PostgreSQL & sqldf sqldf 不仅支持 sqlite,还支持 h2、postgresql 和 mysql。 postgresql 在这方面特别强大。参见 this link from the postgresql documentation另见 Pl/R和 R Embedded Postgres package .
6) H2 & sqldf sqldf支持H2数据库。就像 sqlite H2 一样包含在 RH2 驱动程序 R 包中,因此您不必安装单独的数据库;但是,您必须安装 Java。它有一个内置的 SHA256 哈希函数(称为哈希)。
7) mix sqldf & R sql和R可以这样混合:
library(digest)
transform(sqldf("select * from BOD"), digest = sapply(demand, digest))
8) 其他 看这个SO question and answers
更新:添加了关于 H2 的信息。
关于r - 从 sqldf 查询调用 R 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16451258/