是否有方法从sqldf查询调用R函数?例如。从sqldf查询调用R函数
sqldf("select paste('Hello', 'World')")
或者,有没有办法在sqldf后面的SQLite引擎中定义自定义函数或存储过程? (我正在使用带有普通旧内存R数据帧的sqldf;我没有连接到任何实际的数据库。)
是否有方法从sqldf查询调用R函数?例如。从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一个从源码的版本的SQL加上大量的用户的所有的SQL函数定义的函数出来的在RSQLite.extfuns包中(由sqldf自动加载)。
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 H2数据库由sqldf支持。像sqlite H2包含在RH2驱动程序R包中,因此您不必安装单独的数据库;但是,您必须安装Java。它有一个内置的SHA256哈希函数(称为哈希)。
7)混合sqldf &ř SQL和R可以混合像这样:
library(digest)
transform(sqldf("select * from BOD"), digest = sapply(demand, digest))
8)其他见本SO question and answers
UPDATE:上H2添加信息。
为什么要使用R函数而不是内置的SQLite函数? – joran 2013-05-08 22:31:45
我认为答案很简单,不。 – nograpes 2013-05-08 22:33:58
joran:实际上,我感兴趣的特定函数是摘要R包中的摘要(),以计算MD5哈希值 – 2013-05-08 22:35:51