Sweave не может загрузить пакеты R - PullRequest
7 голосов
/ 16 декабря 2011

Я обновил R до v2.14.0 и вместе с обновлением решил переместить стандартный репозиторий пакетов в Dropbox, чтобы ноутбук и настольный компьютер были синхронизированы все время.Я установил R_LIBS=/Dropbox/ToolBox/R/packages в .Renviron, и при открытии Rstudio или R.app (mac) я получаю следующие команды:

> Sys.getenv("R_LIBS")
[1] "/Dropbox/Toolbox/R/packages"

> .libPaths()
[1] "/Dropbox/Toolbox/R/packages"      
[2] "/Library/Frameworks/R.framework/Versions/2.14/Resources/library"
[3] "/Applications/RStudio.app/Contents/Resources/R/library

, но когда я запускаю те же команды в .Snw (Textmate +Sweave) Я получаю:

> Sys.getenv("R_LIBS")
[1] ""

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.14/Resources/library"

Как вы можете видеть выше, когда я вызываю R из Sweave, он берет только стандартный репозиторий. Я создал Renviron.site, Rprofile.site, прочитайте help(Startup), следуя аналогичнымвопросы q1 и q2 не увенчались успехом.

Может кто-нибудь пролить свет (шаг за шагом) на то, как решить эту проблему, пожалуйста?

Обновление: когда я запускаю свой .Snw изнутри R, он подбирает все нужные папки.Я не уверен, почему, когда делается из textmate делает что-то другое.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 17 декабря 2011

Благодаря Джошу я понял, что проблема была не в самом R, а в textmate.

Ни один из пакетов Sweave и R не собирал мой локальный репозиторий из-за того, что опция --vanilla была включена по умолчанию воба пакета.

Вот мое решение:

R Bundle

  1. Откройте терминал и перейдите в $ HOME / Библиотека / Поддержка приложений / TextMate / Pristine Copy /Связки
  2. Введите >mate R.tmbundle. Откроется комплект R непосредственно в textmate
  3. . В папке поддержки есть файл с именем tmR.rb
  4. Прокрутите вниз, пока не найдете этострока: stdin, stdout, stderr, pid = my_popen3("R --vanilla --slave --encoding=UTF-8 2>&1")
  5. Удалить параметр --vanilla и сохранить

Sweave Bundle

  1. В Textmate перейдите в Bundles> Bundles Editor> Показать Bundles Editor
  2. Нажмите на связку Sweave, чтобы развернуть
  3. Перейдите к Sweave, Typset & View и прокрутите вниз, пока не увидите следующую строку: echo -e "setwd('$SW')\nSweave('$TM_FILEPATH')" | R --vanilla --quiet | pre
  4. Измените --vanilla на --save
  5. Обновить пакет

Счастливые дни снова вернулись :-)

1 голос
/ 16 декабря 2011

Попробуйте добавить такую ​​строку в файл "Rprofile.site", расположенный в $R_HOME/etc/. (Здесь $R_HOME - это каталог, возвращаемый при запуске R.home() в активном R сеансе.)

(Вы также захотите удалить (возможно временно) любые ".Rprofile" файлы из: (a) вашего домашнего каталога и (b) текущего каталога (из которого запускается R / Sweave).)

.libPaths(c("/Dropbox/Toolbox/R/packages", 
            .libPaths()))

Затем, если это не решит проблему напрямую (и это точно работает для меня), Sweave, а затем примените LaTeX к скелетному документу .Snw, который включает в себя следующий фрагмент.

<<>>=
R.home()
.libPaths()
@

Вывод должен содержать некоторые полезные советы для источника вашей проблемы.

...