Где R хранит пакеты?

207

install.packages()Функция R является автоматической утилитой распаковки , которая получает и установку пакетов в R.

  1. Как мне узнать, какой каталог R выбрал для хранения пакетов?

  2. Как я могу изменить каталог, в котором R хранит и получает доступ к пакетам?

Milktrader
источник

Ответы:

249

Команда install.packages просматривает переменную .libPaths. Вот то, что у меня по умолчанию на OSX:

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

По умолчанию я не устанавливаю туда пакеты, я предпочитаю, чтобы они устанавливались в моем домашнем каталоге. В моем .Rprofile у меня есть эта строка:

.libPaths( "/Users/tex/lib/R" )

Это добавляет каталог "/ Users / tex / lib / R" в начало переменной .libPaths.

Джеймс Томпсон
источник
это то, что я хотел бы сделать, но как мне получить доступ и .Rprofile? Подсказка не распознает его как объект или функцию
Milktrader,
7
Это файл . Опять же, прочитайте прекрасное руководство и / или справку (Автозагрузка).
Дирк Эддельбюттель
44

Это задокументировано в руководстве 'R Installation and Administration', которое прилагается к вашей установке.

На моей коробке Linux:

R> .libPaths()
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"      
[3] "/usr/lib/R/library"           
R> 

Это означает, что путь по умолчанию является первым из них. Вы можете переопределить это через аргумент для обоих install.packages()(изнутри R) или R CMD INSTALL(вне R).

Вы также можете переопределить, установив переменную R_LIBS_USER.

Дирк Эддельбюттель
источник
У меня машина с Windows Vista, но при условии, что такая же процедура существует, вы указываете каталог в списке аргументов install.packages () вместе с именем пакета?
Milktrader
3
Вы уже обнаружили 'help (install.packages)'? Кроме того, см. «Помощь (запуск)» в соответствии с моим последним комментарием. И прочитайте эти инструкции. И наконец, на * doze я обычно просто устанавливаю R_LIBS = "C: / opt / R / library" в файле .Renviron. Я знаю, что вы тоже спросите об этом - так что читайте справку (запуск). ОК? ;-)
Дирк Эддельбюттель
1
У меня есть дюжина руководств R на моем Kindle (включая более 3000 страниц) и я не знал о файле справки при запуске. Я читал инструкции и зашел в тупик. Пойди разберись, это был простой ответ с самого начала. Потеряю ли я баллы за вопросы RTFM <- мне нечего терять. Еще раз спасибо, Дирк. Увидимся в R / Finance на следующей неделе. Усиливая навыки R как можно лучше, чтобы не запылиться во время презентаций.
Milktrader
1
Страница 3000+ - это подборка всех страниц справки - наименее полезная. Вышеупомянутое «Установка и администрирование» должно быть очень полезным для того, что вы ищете здесь.
Дирк Эддельбюттель
Есть ли эквивалентный способ найти их из командной строки bash? т.е. переменная окружения , которая определяет , где установлены библиотеки R , если $R_LIBSи $R_LIBS_USERне установлены? (Я хочу иметь возможность выполнить скрипт R в inst/каталоге установленного пакета) в любой системе Unix.
Дэвид Лебауэр
12

Спасибо за указание от вышеупомянутых двух ответчиков. Предложение Джеймса Томпсона работало лучше всего для пользователей Windows.

  1. Перейдите туда, где установлена ​​ваша R-программа. Это упоминается R_Homeв литературе. Найдя его, перейдите в подкаталог / etc.

    C:\R\R-2.10.1\etc
  2. Выберите файл в этой папке с именем Rprofile.site. Я открываю это с VIM. Вы обнаружите, что это простой файл с менее чем 20 строками кода. Я вставил в код следующее:

    # my custom library path
    .libPaths("C:/R/library")

    (Комментарий добавлен для отслеживания того, что я сделал с файлом.)

  3. В R, набрав .libPaths()функцию, вы получите первую цель вC:/R/Library

ПРИМЕЧАНИЕ: вероятно, есть несколько способов достижения этого, но другие методы, которые я пробовал, по какой-то причине не работали.

Milktrader
источник
1
Я скопировал вставленную строку .libPaths=("C:/R/library")в мой файл Rprofile.site . Я запускаю 64-битный R 2.13.1 и получаю эту ошибку: Ошибка: невозможно изменить значение заблокированной привязки для .libPaths. Я использую Windows 7.
Фред
1
Смотрите ответ Дэйва : так и должно быть .libPaths("...")(звонок, а не назначение).
CodeFox
0

Вы не хотите '='

Используйте .libPaths("C:/R/library")в Rprofileвашем файле .site

И убедитесь, что у вас есть правильный "символ (Shift-2)

Дейв
источник