2016-07-12 2 views
0

Я новичок в R и в настоящее время занимаюсь некоторой автоматизацией с использованием .Rprofile. Я искал и искал правильный способ этого, но нашел мало информации, которая говорит конкретно о трудностях, с которыми я сталкиваюсь. Пожалуйста, простите меня, если это наивный вопрос, клянусь, я пытаюсь попасть туда!Предварительная загрузка соединения db MySQL в R с использованием .Rprofile

Я создаю проект в RStudio. Это потребует взаимодействия с MySQL db, размещенным на моем компьютере. Вместо того, чтобы повторно вводить всю информацию о соединении каждый раз, когда я запускаю проект, я пытался автоматизировать процесс, используя конкретный проект (в корневой директории проекта) .Rprofile.

манипуляция следующее в R отлично работает:

dbxxx <- dbConnect(MySQL(), 
    user='xxx', 
    password='xxx', 
    dbname='dbxxx', 
    host='localhost', 
    unix.sock='/Applications/MAMP/tmp/mysql/mysql.sock') 

R подключается к БД и dbxxx показывает в моей области глобальной окружающей среды в качестве Formal class MySQLConnection.

Затем я попытался сделать то же самое в разделе .Первый моего .Rprofile файла проекта конкретных следующим образом:

## Connect to database 
cat("\nConnecting to localhost: xxx... ", sep="") 
dbxxx <- dbConnect(MySQL(), 
    user='xxx', 
    password='xxx', 
    dbname='dbxxx', 
    host='localhost', 
    unix.sock='/Applications/MAMP/tmp/mysql/mysql.sock') 
cat("Connected.\n", sep="") 

Нет удачи. Нет соединения, и никакой объект не создается. Я понимаю, что синтаксис для .Rprofile не всегда совпадает с синтаксисом для R-профайла, но для жизни я не могу понять, исправить. На данный момент я даже задаюсь вопросом, является ли это хорошей идеей или может быть какой-то способ, о котором я не знаю, чтобы это делать.

ответ

0

Есть несколько веских причин избежать использования конфигурационного файла R. Важнейшим аргументом против его использования является переносимость.

Тем не менее здесь, как настроить его правильно:

Важно знать расположение установочных копий файлов .Rprofile и .Renviron, которые используются.

R использует только один .Rprofile и один .Renviron в любой сессии: если у вас есть .Rprofile файл в текущем проекте, R будет игнорировать .Rprofile в R_HOME и HOME. Аналогично, .Rprofile в HOME переопределяет .Rprofile в R_HOME. То же самое относится к .Renviron: вы должны помнить, что добавление конкретных переменных среды проекта с .Renviron приведет к деактивации другого .Renviron files.

Так что попробуйте поместить свой .Rprofile в папку вашего проекта.

Чтобы создать сценарий запуска для конкретного проекта, просто создайте файл .Rprofile в корневом каталоге проекта и начните добавлять R-код, например. через file.edit (". Rprofile"). Помните, что это приведет к игнорированию .Rprofile в домашнем каталоге.

Посмотрите на это link для получения полного объяснения.

Вариант 2:

Позвольте мне предложить вам другой подход. Вместо сохранения всего соединения в.Rprofile, просто сохранить пользовательские данные следующим образом:

/* .Rprofile*/ 
mysql.user <- list(user='xxx', 
      password='xxx', 
      dbname='dbxxx', 
      host='localhost', 
      unix.sock='/Applications/MAMP/tmp/mysql/mysql.sock') 

Reload Rstudio и попробуйте в консоли:

db <- dbConnect(MySQL(),mysql.user) 
+0

Я понимаю аргумент переносимости - это в основном для моих собственных целей обучения. У меня есть файл .Rprofile в корневом каталоге проекта. Учитывая это, должен ли мой код действительно работать? Если так, я в тупике. –

+0

вернемся к базовому добавить 'print (« Это Rprofile внутри проекта foo! »)' К вашему локальному .Rprofile и перезагрузить RStudio. Сообщите мне, печатает ли это сообщение в консоли – Altons

+0

и скажет мне, что 'getwd()' возвращает - это должна быть та же самая папка, где ваш проект rstudio равен – Altons

0

Оказывается, было относительно легко исправить. Огромное спасибо @Altons за устранение неполадок пациента!

Я прилагал команды dbConnect в пределах раздел .First. Как только я вытащил их оттуда, все сработало отлично!

Пример unworking кода:

.First <- function() { dbxxx <- dbConnect(MySQL() &c) }

Теперь рабочий код:

dbxxx <- dbConnect(MySQL() &c) .First <- function() { }

где '& с' остальные функции dbConnect.

Обучение - это весело!

+0

рад, что вы нашли решение! – Altons

Смежные вопросы