我刚刚开始发现使用R
&monetDB
/monetDBLite
包的所有优点 - 很棒的东西!
但是我很好奇是否可以在dplyr
的mutate()
中使用自定义函数,即
# 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
包使用自定义函数?
由于@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
确实支持将已使用的已定义函数发送到数据库进行计算。这一切都在他们的主页上得到了很好的解释。