Как указывает сообщение об ошибке, вы пытаетесь подключиться к своей базе данных, передав ей вектор символов. Это не сработает.
Одним из вариантов было бы использовать правильный синтаксис в скрипте:
library(RMySQL)
mysqlconnection <- dbConnect(RMySQL::MySQL(),
user = 'root',
password = '',
dbname = 'nepal_statgri',
host = 'localhost')
Однако уже об использовании Rscript. Поэтому я понимаю, что вы заинтересованы в том, чтобы иметь R-файл, который не хранит сведения о вашем соединении, но вместо этого вы хотите передать эти данные в качестве аргументов из терминала оболочки.
Один из вариантов заключается в использовании пакета docopt
, который позволяет легко создавать интерфейсы командной строки для ваших R-скриптов. Например, если вы сохраните следующее в файле connect_mysql.R
:
'usage: connect_mysql.R [--user <user> --password <pwd> --db <database> --host <host>]
options:
--user username
--password password
--db database
--host host
' -> doc
library(docopt)
library(RMySQL)
opts <- docopt(doc)
con <- dbConnect(RMySQL::MySQL(),
username = opts$user,
password = opts$password,
dbname = opts$db,
host = opts$host)
dbListTables(con)
dbDisconnect(con)
тогда вы сможете вызвать его, используя Rscript и передать свои данные соединения:
Rscript connect_mysql.R --user root --password password --db nepal_statgri --host localhost
'' RMySQL' dbConnect' не имеет версии, которая может принимать одну строку соединения этого формата. Вам нужно будет разобрать входную строку в вашем R-скрипте или, возможно, использовать группы MySQL. –
Я пробовал этот путь, но результат тот же. Или, может быть, вы можете привести mi пример? –
Посмотрите на ответ @sinQueso ниже, вам нужно либо исправить свой синтаксис, либо использовать группы, API-интерфейс RMySQL не позволит вам делать то, что вы имеете в виду. –