Я пытаюсь переписать некоторый код, используя библиотеку sqldf в R, что должно позволить мне выполнять запросы SQL для фреймов данных, но у меня возникает проблема, заключающаяся в том, что всякий раз, когда я пытаюсь выполнить запрос, R кажется, что это пытается запросить фактическую реальную базу данных MySQL, которую я использую, и искать таблицу по имени фрейма данных, по которому я пытаюсь найти.
Когда я запускаю это:
sqldf("SELECT COUNT(*) from work.class_scores")
Я получаю:
Ошибка в mysqlNewConnection (drv, ...):
Драйвер RS-DBI: (Не удалось подключиться к базе данных: ошибка: невозможно подключиться к локальному серверу MySQL через сокет '/tmp/mysql.sock' (2)
)
Когда я пытаюсь указать местоположение двумя разными способами (первый из них формирует страницу 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, и мне это удобно. Единственная проблема в том, что я не знаю, есть ли другой способ указать, что я запрашиваю фрейм данных, а не фактическую базу данных. Я скучаю по чему-то действительно глупому и легкому здесь?
Спасибо!