2012-04-24 7 views
44

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

+6

Обычно это не очень хорошая идея, потому что она делает все последующий код в сессии зависит от установленного в то время как если бы он имел библиотечные вызовы в нем, то это будет более самодостаточным. Если вы попытаетесь поделиться своим кодом с другими, они не будут вам очень рады, так как они не смогут запускать ваши скрипты без дополнительных инструкций. –

+1

Вы можете определить функцию 'load_extra_packages()' в файле '.Rprofile' /' Rprofile.site', который загрузил все нужные вам пакеты (и распечатал их имена), затем запустите эту команду в начале ваших сеансов - это сделает ваш код прозрачным, если не полностью автономным ... –

ответ

63

Поместите library(foo) в файл .Rprofile или установить R_DEFAULT_PACKAGES: см ?Rprofile ...

В частности, (потому что ?Rprofile долго и потенциально запугивая):

If you want a different set of packages than the default ones when you start, insert a call to ‘options’ in the ‘.Rprofile’ or ‘Rprofile.site’ file. For example, ‘options(defaultPackages = character())’ will attach no extra packages on startup (only the ‘base’ package) (or set ‘R_DEFAULT_PACKAGES=NULL’ as an environment variable before running R). Using ‘options(defaultPackages = "")’ or ‘R_DEFAULT_PACKAGES=""’ enforces the R system default.

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

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

или с помощью options(defaultPackages=...):

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

в вашем .Rprofile к Append желаемых пакетов для стандартного по умолчанию.

редактировать (скопированы с комментариями) вновь получать эту работу в 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 или нет.

Редактировать # 2: в соответствии с нижеследующим комментарием он работает с последней версией Rstudio.

+2

+1 для 'потому что '? Rprofile' длинный и потенциально запугивающий'. Это так, а также ужасно компактный * и * полный комплект документации. Определенно рекомендуемое чтение. –

+0

Спасибо @Ben Bolker Я попытался добавить эту строку 'library (foo)' в файл 'Rprofile.site', и я не получаю то, что хочу. Что значит «foo»? Что это? Предполагается ли это имя для определенного пакета, который я хочу загрузить? – Nestorghh

+3

извините; 'foo' - старомодная переменная« placeholder ». Например, вы можете попробовать «library (« ggplot2 »); библиотека ("emdbook"); библиотека ("quantreg"); library ("rms") '(в качестве примеров некоторых реальных пакетов, которые вы можете включить). –

15

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

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

7

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

EDIT: Я заметил, что R 3.0.0 не выглядит из папки документов больше, но использует дом пользователя (имя пользователя) под Windows 7. Возможно, это может быть проблема с установкой (например, что я случайно установил R "ранее). Тем не менее, страница Quick-R, связанная в этом ответе, говорит правильный способ сделать это. Если кто-то еще сталкивается с этой проблемой, решение должно скопировать .Rprofile в домашний каталог пользователя.

0

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

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

Note that when the site and user profile files are sourced only the base package is loaded,

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

Я вижу два решения до сих пор:

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

  2. Обновление опции defaultPackages: не используйте library() в вашем .Rprofile, но что-то в этом роде.

    old <- getOption("defaultPackages") 
    options(defaultPackages = c(old, "tidyverse")) 
    

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

  • Нет связанных вопросов^_^