很抱歉,如果这个问题在别处被问过,我找不到它。我正在使用MonetDBLite中的一些basic examples。
> dbGetQuery(dbcon, "SELECT MAX(mpg) FROM mtcars WHERE cyl = 8")
L3
1 19.2有效,但是
> ms <- MonetDBLite::src_monetdblite("./DB")
> t <- tbl(ms, "mtcars")
Error in UseMethod("tbl") :
no applicable method for 'tbl' applied to an object of class
"c('src_monetdb', 'src_sql', 'src')"它似乎试图将数据库赋值给t,而不是表。
任何建议都将不胜感激。
我仔细阅读了参考资料,发现了一个useR2016演示文稿,并注意到其中的不同之处:
> ms
src: MonetDBEmbeddedConnection
tbls: mtcars好奇..。
发布于 2018-11-15 03:42:22
我非常喜欢和dplyr一起使用MonetDBLite。我对Hannes Mühleisen's的补充(谢谢你的套餐!)答案是,您加载包的顺序似乎很重要。在dplyr和dbplyr之后加载MonetDBLite似乎是我的关键。首先加载MonetDBLite会导致类似于nzgwynn提到的错误。
有时我可以毫无问题地连接到数据库。其他时候,我会收到如下错误消息:
UseMethod("db_query_fields")中出现
错误:没有适用于"MonetDBEmbeddedConnection“类的对象的”db_query_fields“方法。
像nzgwynn一样,我很困惑为什么它有时可以工作,而其他时候却不行。对我来说,重新启动和重新安装不一定能解决这个问题。
这条线索,来自一个关于sparklyr的问题,引导我探索包的加载顺序:
https://github.com/rstudio/sparklyr/issues/38
就像在sparklyr中提到的一样,我也注意到在其他R数据库包中,如果全局环境已经包含连接对象,MonetDBLite将自动加载和附加。我的问题是,我的工作区中有一个src_monetdb对象,它导致MonetDBLite在启动RStudio时加载。所以当我认为我是在dplyr和dbplyr之后加载它的时候,它实际上是先加载的。如果我清除工作区,然后重新启动,我可以按首选顺序加载包。到目前为止,这种方法是有效的。
我认为从一个干净的工作区开始通常被建议为良好的实践,例如:https://twitter.com/hadleywickham/status/561146907519500288。考虑到MonetDBLite的快速查询能力,从一个全新的工作空间开始也不会浪费您的时间。
最后,我将热情地介绍一下如何使用MonetDBLite。我在RStudio's database page上看到了这一点,很快就对它的设置和速度留下了深刻的印象。这是我在R中发现的处理大约2 GB数据集的最好方法。当交互地探索数据时,dplyr查询运行得如此之快,感觉就像是在处理内存中的数据。如果我想要做的只是将整个数据集加载到内存中,那么MonetDBLite的速度与我尝试过的其他方法一样快,甚至更快,比如来自fst包的read.fst()。
发布于 2018-10-11 19:15:10
在使用tbl和朋友之前,您需要调用library("dplyr")。另外,还要确保您安装了dbplyr。
更新:另外,请确保在启动时加载的存储工作区中没有连接对象(src)。从.Rdata文件加载连接不起作用!相反,应该在每次运行脚本时从头开始创建连接/src。
发布于 2018-10-12 00:27:16
我关闭R并再次打开它,相同的代码运行良好……
https://stackoverflow.com/questions/52744540
复制相似问题