2016-02-23 41 views
2

我刚刚开始发现使用R的所有优点& monetDB/monetDBLite包 - 伟大的东西!
我可是好奇,如果有可能在dplyr的下面的错误使用自定义的功能mutate()在mutate()中使用自定义函数与dplyr&monetDB

# Connect to monetDBLite 
db <- src_monetdb(embedded = db.dir) 
data <- tbl(db, "my.table") 

# Try to make a new column using custom defined function 
data %>% group_by(colX) %>% mutate(NewCol = customFunc()) 

结果:

Error in .local(conn, statement, ...) : 
Unable to execute statement 'SELECT colA colB colC...'. 
Server says 'ParseException:SQLparser:SELECT: no such operator 'customFunc''. 

这似乎是SQL语法分析程序有问题找到自定义功能。我是否在监督某些事情(在SQL函数定义中声明R代码等)?是否可以像这样使用monetDBLite包的自定义函数?

+0

'customFunc'是如何定义的?一般来说,您需要将摘要函数传递给一个参数,即要操作的列。 – alistaire

+2

这还不支持。也许会在中间加入一个'collect()'?传输速度应该非常快,特别是当你选择()只有你以前需要的列时。 –

+0

@HannesMühleisen是的,这工作相当不错。任何计划在未来实施这个计划?此外,它是否有区别,我使用'monetDBLite'包 - 这是可能的'真正的''monetDB'设置?谢谢你,继续努力吧! – davidski

回答

0

由于@Hannes回答我的意见的问题 - 我在这里有一些其他的东西加入它,我拿起:

  • 一个可以使用基本dplyr动词(selectfiltergroup_by & mutate )连同其他一些“基本”R功能。在“SQL转换”一节的dplyrdatabases vignette中有一个支持的函数列表及其他更多信息。因此,使用我上面的问题的例子 - 人们可以这样做:
    data %>% group_by(col_x) %>% mutate(new_col = log10(some_old_col))

  • MonetDBLite不(在这里如我的问题 - 如果有可能使用mutate电话里我UDF)支持的UDF ...

  • ...但是“全” MonetDB不支持使用自定义函数发送到数据库进行计算。这些都在homepage上得到了很好的解释。

相关问题