Изменить R путь библиотеки по умолчанию с помощью .libPaths в Rprofile.site не работает

142

Я запускаю R в Windows, а не как администратор. Когда я устанавливаю пакет, следующая команда не работает:

> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
  'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable

Чтобы установить пакет, я должен указать расположение библиотеки:

install.packages("zoo", lib="C:/software/Rpackages")

Чтобы загрузить пакет, я также должен указать расположение библиотеки:

library("zoo", lib.loc="C:/software/Rpackages")

Все это нормально, но я хотел посмотреть, могу ли я как-то добавить C:/software/Rpackages к пути библиотеки, и поэтому не нужно вводить его каждый раз.

Как я искал в Интернете, я обнаружил, что один из способов сделать это - отредактировать файл Rprofile.site и добавить строку

.libPaths("C:/software/Rpackages")

Однако после этого и запуска RStudio это результат, который я получаю

> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 

Команда .libPaths, которую я добавил в Rprofile.site, похоже, не имела никакого эффекта! Почему это так? Или что еще более важно, как я могу исправить проблему, чтобы я мог устанавливать и загружать пакеты без ввода в библиотеке местоположения?

Примечание: если я запускаю RStudio, команда .libPaths() работает так, как предполагается

.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"

Разве это не странно?

  • 0
    Не могли бы вы немного рассказать о том, как именно install.packages("zoo") не работает? Сообщение об ошибке и т. Д.?
  • 1
    @joran Я добавил сообщение об ошибке при попытке install.packages("zoo") - но это не мой настоящий вопрос, а именно о том, почему .libPaths() в Rprofile.site не работает.
Показать ещё 3 комментария
Теги:
rstudio
r-faq

12 ответов

127
Лучший ответ

Обычно я стараюсь хранить все мои пакеты в одной библиотеке, но если вы хотите добавить библиотеку, то почему бы не добавить новую библиотеку в существующую библиотеку:

.libPaths( c( .libPaths(), "~/userLibrary") )

Тогда я получаю:

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/davidwinsemius/userLibrary"  

Функция .libPaths немного отличается от большинства других функций nongraphics. Он работает через побочный эффект. Функции Sys.getenv и Sys.setenv, которые сообщают и изменяют переменные среды R, разделены, но .libPaths может сообщать или изменять свою цель. Информацию о процессе запуска R можно прочитать на странице справки ?Startup, и есть материал RStudio по адресу: https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio

В вашем случае кажется, что RStudio не соблюдает настройки Rprofile.site или, возможно, переопределяет их, читая параметр .Rprofile с одного из значений по умолчанию RStudio. Следует также отметить, что результат этой операции также добавляет содержимое вызовов к .Library и .Library.site, что является еще одной причиной того, что RStudio- (или любая другая IDE или сеть, установленная), размещенная R, может проявлять различное поведение.

  • 9
    Мне нужно было повернуть вектор c() чтобы новые библиотеки переходили в пользовательскую папку
  • 0
    Отличный момент. Фактически .libPaths по умолчанию имеет тот же эффект. Существует также разница между операционными системами в том, как обрабатываются конечные слэши. (Не хорошо в Windows). Другие варианты существуют. Видите ?.libPaths
Показать ещё 4 комментария
163

Правильное решение - установить переменную окружения R_LIBS_USER в значение пути файла к нужной папке библиотеки, а не заставлять RStudio распознавать файл Rprofile.site.

Чтобы установить переменную среды R_LIBS_USER в Windows, перейдите в Панель управления (Свойства системы → Дополнительные свойства системы → Переменные среды → Пользовательские переменные) до нужного значения (путь к папке библиотеки), например

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages  

Настройка R_LIBS_USER гарантирует, что библиотека появится сначала в .libPaths() независимо от запуска RStudio напрямую или щелкнув правой кнопкой мыши файл и "Открыть с", чтобы запустить RStudio.

Решение Rprofile может работать, если RStudio всегда запускается щелчком по ярлыку RStudio. В этом случае будет установка рабочего каталога по умолчанию в каталог, в котором размещается ваш Rprofile. Решение Rprofile не работает при нажатии на файл, чтобы запустить RStudio, потому что это приводит к тому, что рабочий каталог отключается от рабочего каталога по умолчанию.

  • 2
    Договорились о правильном решении!
  • 8
    Определенно правильное решение. Единственная загвоздка в том, что если ваш пользователь не является администратором (вероятно, в случае, если у вас возникла эта проблема для начала), вы должны изменить переменные среды через Панель управления-> Учетные записи пользователей-> Учетные записи пользователей-> Изменить мою среду переменные.
Показать ещё 8 комментариев
18

Мне удалось решить проблему, поместив код в файл .Rprofile в рабочий каталог по умолчанию.

Сначала я нашел местоположение рабочего каталога по умолчанию

> getwd()
[1] "C:/Users/me/Documents"

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

.libPaths("C:/software/Rpackages")

Наконец, когда я запустил R и запустил .libPaths(), я получил желаемый результат:

> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
  • 0
    Это не работает для меня (как и решение от BondedDust). Я создал текстовый файл и сохранил его как .Rprofile в папке из getwd ().
  • 2
    @ Джон, я верю, что мы говорим то же самое.
Показать ещё 3 комментария
10
8

Если у вас нет прав администратора, также может быть полезно открыть Rprofile.site файл, расположенный в \R-3.1.0\etc, и добавить:

.First <- function(){
  .libPaths("your path here")
}

Это оценивает команду .libPath() непосредственно при запуске

7

Я нашел то, что я считаю решением здесь (спасибо Карлу Шварцу в SFU) за добавление персональной библиотеки, которая постоянно (вам не нужно определять ее каждый сеанс) распознает, используя ли R или Rstudio, и Rstudio рассматривает ее как по умолчанию на моем компьютере Mac. Я не видел, чтобы это было четко изложено в SO, поэтому я суммировал предоставленные шаги для Windows, а затем для Mac.

Для ОС Windows 7:

  1. Создайте каталог на диске, где вы хотите иметь свою личную библиотеку, например, C:\User\Rlibs (или другой, к которому у вас есть разрешения)

  2. Найдите или перейдите к "Изменить переменную среды для вашей учетной записи" в панели поиска Windows, чтобы изменить настройки панели управления.

  3. Нажмите "Новый..." в середине окна "Переменные среды"

  4. В окне "Новая переменная пользователя" введите R_LIBS для "Имя переменной" и путь к созданному вами каталогу личной библиотеки, например, C:\User\Rlibs.

  5. Нажмите OK, и вы должны увидеть пару Variable/Value в окне переменных пользователя.

  6. Нажмите OK еще раз

Теперь, когда вы запускаете R (или Rstudio) и вводите команду .libPaths() вы должны увидеть созданную вами личную библиотеку, а также системную библиотеку R.

Для Mac:

  1. В папке "Home" или "username" создайте папку с именем Rlibs

  2. Запустите приложение "Терминал"

  3. Тип: echo "R_LIBS=~/Rlibs">.Renvrion Убедитесь, что регистр совпадает.

  4. Введите ls -a чтобы увидеть полный список файлов в каталоге, который теперь должен включать .Renvrion

  5. Убедитесь, что файл .Renviron установлен правильно: more.Renviron

Запустите R/Rstudio и введите .libPaths() и вы должны увидеть новый путь к вашей личной библиотеке.

4

У меня были реальные проблемы с пониманием этого. gorkypl дал правильное решение выше, когда я последний раз заново установил свою ОС и Rstudio, но на этот раз настройка моей переменной среды не решилась.

Удалены как R, так и Rstudio, создавая каталоги C:\R и C:\Rstudio, затем переустановить оба.

Определите пользовательскую переменную R_LIBS_USER в ваш предпочтительный каталог (в соответствии с ответом gorkypl) и перезагрузите компьютер для загрузки пользовательской переменной. Откройте Rstudio, ошибки должны исчезнуть.

Вы также можете использовать Sys.setenv(), чтобы изменить R_LIBS_USER на путь вашей альтернативной библиотеки, который проще и не требует перезагрузки компьютера.

Чтобы узнать, для чего установлен R_LIBS_USER: ?Sys.getenv()

Чтение help(Startup) полезно.

2

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

.libPaths()

Теперь установите существующий и старый путь:

.libPaths(c(.libPaths(), "~/yourOldPath"))

Надеюсь, что это поможет.

1

Я прочитал readme. В этом они упомянули использование .libPaths() в командной строке, чтобы проверить, какие пути существуют. Раньше у меня было 2 пути библиотеки. Когда я использовал команду .libpath( "C:/Program Files/R/R-3.2.4revised/library" ), где я хотел, она изменила путь к библиотеке. Когда я снова набрал .libPaths() в командной строке, он показал мне правильный путь. Надеюсь, что это поможет

0

просто измените папку по умолчанию для ваших библиотек R в каталоге без прав администратора, например

.libPaths("C:/R/libs")
0
getwd()
# [1] "C:/Users/..../software/My R studio"

скопируйте вышеуказанную ссылку с двойной кавычкой

.libPaths(new="C:/Users/..../software/My R studio")

Ваш путь по умолчанию будет изменен для установки пакетов

-1

Я изучал это, потому что у R были проблемы с установкой в ​​местоположение по умолчанию, и вместо этого они просто помещали пакеты во временную папку. Это оказалось последним обновлением для Mcaffee Endpoint Security, которое, по-видимому, имеет проблемы с R. Вы можете отключить защиту от угроз при установке пакетов, и он будет работать правильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню