我正在尝试使用 R 中的 sqldf 库重写一些代码,这应该允许我在数据帧上运行 SQL 查询,但是我遇到的问题是,每当我尝试运行查询时,R 似乎都在尝试查询我使用的实际真正的 MySQL db con 并通过我试图搜索的数据框的名称查找表。
当我运行这个:
sqldf("SELECT COUNT(*) from work.class_scores")
我得到:
mysqlNewConnection(drv, ...) 中的错误:RS-DBI 驱动程序:(无法连接到数据库:错误:无法通过套接字 '/tmp/mysql.sock' (2) 连接到本地 MySQL 服务器)
当我尝试使用两种不同的方式指定位置时(第一种形式是 googlecode 页面,第二种方式应该根据文档正确)
> sqldf("SELECT COUNT(*) from work.class_scores", sqldf.driver = "SQLite")
Error in sqldf("SELECT COUNT(*) from work.class_scores", sqldf.driver = "SQLite") :
unused argument(s) (sqldf.driver = "SQLite")
> sqldf("SELECT COUNT(*) from work.class_scores", drv = "SQLite")
Loading required package: tcltk
Loading Tcl/Tk interface ... Error : .onLoad failed in loadNamespace() for 'tcltk', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared library '/Library/Frameworks/R.framework/Resources/library/tcltk/libs/x86_64/tcltk.so':
dlopen(/Library/Frameworks/R.framework/Resources/library/tcltk/libs/x86_64/tcltk.so, 10): Library not loaded: /usr/local/lib/libtcl8.5.dylib
Referenced from: /Library/Frameworks/R.framework/Resources/library/tcltk/libs/x86_64/tcltk.so
Reason: image not found
Error: require(tcltk) is not TRUE
所以,我认为这个包 tcltk 可能有问题,我从未听说过,所以我尝试解决这个问题并找到一些问题:
> install.packages("tcltk")
Warning in install.packages :
argument 'lib' is missing: using '/Users/michaeldiscenza/Library/R/2.11/library'
Warning in install.packages :
package ‘tcltk’ is not available
> install.packages("tcltk2", lib="/Applications/RStudio.app/Contents/Resources/R/library")
trying URL 'http://lib.stat.cmu.edu/R/CRAN/bin/macosx/leopard/contrib/2.11/tcltk2_1.1-5.tgz'
Content type 'application/x-gzip' length 940835 bytes (918 Kb)
opened URL
==================================================
downloaded 918 Kb
The downloaded packages are in
/var/folders/Y1/Y1gdz9tKFiSnWsGP9+BDcU+++TI/-Tmp-//RtmpL07KTL/downloaded_packages
> library("tcltk")
Loading Tcl/Tk interface ... Error : .onLoad failed in loadNamespace() for 'tcltk', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared library '/Library/Frameworks/R.framework/Resources/library/tcltk/libs/x86_64/tcltk.so':
dlopen(/Library/Frameworks/R.framework/Resources/library/tcltk/libs/x86_64/tcltk.so, 10): Library not loaded: /usr/local/lib/libtcl8.5.dylib
Referenced from: /Library/Frameworks/R.framework/Resources/library/tcltk/libs/x86_64/tcltk.so
Reason: image not found
Error: package/namespace load failed for 'tcltk'
!dbPreExists 中的错误:参数类型无效
在这里,我真的不知道问题是什么,我需要移动一些东西吗?
我尝试的另一种方法是在对数据框对象运行查询之前,设置我的数据库连接,以便 R 会在那里查看,而不是尝试连接到实际的本地 MySQL 数据库。但这没有用。回到套接字的问题(即使我可以毫无问题地查询本地数据库本身。
> con <- sqldf()
Error in mysqlNewConnection(drv, ...) :
RS-DBI driver: (Failed to connect to database: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
)
最终,我想查询例如 C 的值大于 2 的记录数,我觉得这样做很舒服。唯一的问题是我不知道是否有另一种方法可以指定我正在查询的是数据框而不是实际的数据库。我在这里错过了一些非常愚蠢和容易的东西吗?
谢谢!