有没有办法从 sqldf 查询中调用 R 函数?例如
sqldf("select paste('Hello', 'World')")
或者,有没有办法在 sqldf 后面的 SQLite 引擎中定义自定义函数或存储过程?(我正在使用带有普通旧内存 R 数据帧的 sqldf;我没有连接到任何实际的数据库。)
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/R和R 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 的信息。