2

我刚刚开始发现使用R& monetDB/monetDBLite包的所有优点 - 很棒的东西!
但是我很好奇是否可以在 ie 中使用自定义定义dplyrmutate()函数

# 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 解析器在查找自定义函数时遇到了问题。我是否在监督某些事情(在函数定义中声明R代码等)?SQL是否可以在这样的包中使用自定义定义的函数monetDBLite

4

1 回答 1

0

由于@Hannes 在评论中回答了我的问题 - 我在这里添加了一些我捡到的其他东西:

  • 可以将基本dplyr动词(select, filter, group_by& mutate)与其他一些“基本”R功能结合使用。在“SQL 翻译”部分下的dplyr 数据库小插图中有一个受支持函数的列表,以及更多关于此的内容。因此,使用上面我的问题中的示例 - 可以这样做:
    data %>% group_by(col_x) %>% mutate(new_col = log10(some_old_col)).

  • MonetDBLite不支持 UDF(例如我的问题 - 如果可以在mutate通话中使用我的 UDF)...

  • ...但是“完整”MonetDB确实支持将使用定义的函数发送到数据库进行计算。这一切都在他们的主页上得到了很好的解释。

于 2017-01-24T10:36:08.013 回答