很抱歉,如果在其他地方也提出过这个问题,我找不到。我正在研究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')"
似乎正在尝试将db分配给t而不是表。
任何建议将不胜感激。
我一直在细读资源,找到了useR2016演示文稿,并注意到这里的区别:
> ms
src: MonetDBEmbeddedConnection
tbls: mtcars
好奇...
答案 0 :(得分:2)
我非常喜欢与MonetDBLite
一起使用dplyr
。我对HannesMühleisen(感谢包裹!)的回答是,看来装载包裹的顺序很重要。在MonetDBLite
和dplyr
之后加载dbplyr
似乎是我的关键。首先加载MonetDBLite
会导致类似于所提到的nzgwynn的错误。
有时我可以毫无问题地连接到数据库。有时我会收到类似以下错误消息:
UseMethod(“ db_query_fields”)中的错误:没有将适用于'db_query_fields'的适用方法应用于类“ MonetDBEmbeddedConnection”的对象
就像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
的速度与我从read.fst()
包中尝试过的fst
一样快。
答案 1 :(得分:0)
使用library("dplyr")
和朋友之前,您需要先致电tbl
。另外,请确保您已安装dbplyr
。
更新:另外,请确保在启动时加载的存储工作空间中没有连接对象(src
)。从.Rdata文件加载连接无效!而是在每次运行脚本时从头开始创建connection / src。
答案 2 :(得分:0)
我关闭了R并再次打开它,相同的编码工作正常...