Как автоматически загружать пакеты в R?

Не могли бы вы предложить мне способ автоматической загрузки пакетов в R? Я имею в виду, я хочу начать сеанс в R без необходимости использовать library('package name') несколько раз. Предположим, я скачал все пакеты, которые хочу использовать при следующем запуске R.

4 ответа

Решение

Положил library(foo) в вашем .Rprofile файл или набор R_DEFAULT_PACKAGES: увидеть ?Rprofile...

В частности (потому что ?Rprofile это долго и потенциально пугающе)

Если вы хотите, чтобы при запуске набор пакетов отличался от пакетов по умолчанию, вставьте вызов 'options' в файл.Rprofile или Rprofile.site. Например, "options(defaultPackages = character())" не добавит дополнительные пакеты при запуске (только "базовый" пакет) (или установит "R_DEFAULT_PACKAGES=NULL" в качестве переменной среды перед запуском R). Использование 'options(defaultPackages = "") "или" R_DEFAULT_PACKAGES=""' обеспечивает применение системы R по умолчанию.

Поскольку вы, вероятно , хотите, чтобы все пакеты по умолчанию были загружены, а затем добавлены дополнительные (вместо того, чтобы, скажем, не загружать некоторые пакеты по умолчанию), вы можете поместить

library("mypackage1")
library("mypackage2")
[etc.]

или используя options(defaultPackages=...):

options(defaultPackages=c(getOption("defaultPackages"),
       "mypackage1","mypackage2", ... [etc.]))

в вашем .Rprofile добавить желаемые пакеты к стандартным настройкам по умолчанию.

редактировать (скопировать из комментария), чтобы заставить его работать в Rstudio: http://rstudio.org/docs/using/workspaces предполагает, что Rstudio выполняет .Rprofile а затем "выполняет другие действия, описанные в запуске R [ http://stat.ethz.ch/R-manual/R-patched/library/base/html/Startup.html ]" (то же самое, что ?Rprofile). Сомнительно ли это Rprofile.site или нет.

edit # 2: согласно комментарию ниже, он работает с последней версией Rstudio.

Существует файл с именем.Rprofile, который представляет собой не что иное, как скрипт, который запускается каждый раз, когда вы начинаете новый сеанс R.

Что вам нужно сделать, это добавить library(package) к этому. Если вы используете Unix, он, вероятно, находится в вашей домашней папке как скрытый файл.

Страница Quick-R по настройке запуска R в основном содержит ту же информацию, что и в ответах Бена и Жоао, но, возможно, немного понятнее. Создать копию Rprofile.site файл с желаемыми изменениями в вашей домашней папке (Documents on Windows) и назовите его .Rprofile

РЕДАКТИРОВАТЬ: я заметил, что R 3.0.0 больше не смотрит из папки "Документы", но использует домашний каталог пользователя (имя пользователя) под Windows 7. Это может быть проблема установки, хотя (то есть, что я случайно установил R "неправильно") ранее). Однако страница Quick-R, ссылка на которую содержится в этом ответе, говорит о том, как это сделать. Если кто-то еще сталкивается с этой проблемой, решение состоит в том, чтобы скопировать .Rprofile в домашний каталог пользователя.

Быстрый ответ заключается в том, что вы должны поместить свои пакеты R в .Rprofile файл, как все предложили.

Однако обратите внимание, что R прочитает этот файл, а затем загрузит базовые пакеты R. Смотрите из ? Запуск:

Обратите внимание, что при получении файлов сайта и профиля пользователя загружается только базовый пакет,

Это может вызвать проблемы, если пакет, который вы хотите загрузить, улучшает / перезаписывает некоторые базовые функции R. Смотрите, например, с помощью tidyverse:: filter: https://github.com/tidyverse/dplyr/issues/1611

Пока я вижу два решения:

  1. использование .First.sys() на первой строке вашего .Rprofile file: это команда, которая обычно запускается после чтения.Rprofile и загружает пакеты в getOption("defaultPackages"),

  2. Обновите опцию defaultPackages: не использовать library() в вашем.Rprofile, но как-то так.

    old <- getOption("defaultPackages")
    options(defaultPackages = c(old, "tidyverse"))
    
Другие вопросы по тегам