Change R default library path using .libPaths in Rprofile.site fails to work
Я использую 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"
Разве это не странно?
16 ответов
Обычно я стараюсь хранить все свои пакеты в одной библиотеке, но если вы хотите добавить библиотеку, почему бы не добавить новую библиотеку в существующую библиотеку:
.libPaths( c( .libPaths(), "~/userLibrary") )
Тогда я получаю:
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/davidwinsemius/userLibrary"
.libPaths
Функция немного отличается от большинства других неграфических функций. Это работает через побочный эффект. Функции 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
Это еще одна причина, по которой Rtudio- (или любая другая IDE или установленная сеть) размещенная R может демонстрировать другое поведение.
Правильное решение - установить переменную среды 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, потому что это меняет рабочий каталог по сравнению с рабочим каталогом по умолчанию.
Мне удалось решить проблему, разместив код в .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"
https://superuser.com/questions/749283/change-rstudio-library-path-at-home-directory
Редактировать ~/.Renviron
R_LIBS_USER=/some/path
Здесь я нашел то, что я считаю решением (спасибо Карлу Шварцу в SFU) за добавление персональной библиотеки, которая постоянно (вам не нужно определять ее каждый сеанс) распознает, используя ли R или Rstudio, и Rstudio рассматривает ее как по умолчанию на моем компьютере Mac. Я не видел, чтобы это было четко изложено в SO, поэтому я суммировал предоставленные шаги для Windows, а затем для Mac.
Для ОС Windows 7:
Создайте каталог на диске, где вы хотите иметь свою личную библиотеку, например, C:\User\Rlibs (или другой, к которому у вас есть разрешения)
Найдите / перейдите к "Изменить переменную среды для вашей учетной записи"
Нажмите "Новый..." в середине окна "Переменные среды"
В окне "Новая переменная пользователя" введите R_LIBS для "Имя переменной" и путь к созданному вами каталогу личной библиотеки, например, C: \ User \ Rlibs.
Нажмите OK, и вы должны увидеть пару Variable/Value в окне переменных пользователя.
Нажмите OK еще раз
Теперь при запуске R (или Rstudio) и введите команду .libPaths()
вы должны увидеть созданную вами личную библиотеку, а также системную библиотеку R.
Для Mac:
В папке "Home" или "username" создайте папку с именем Rlibs
Запустите приложение "Терминал"
Тип:
echo "R_LIBS=~/Rlibs"> .Renvrion
Убедитесь, что случай совпадает.Тип
ls -a
чтобы увидеть полный список файлов в каталоге, который теперь должен включать .RenvrionУбедитесь, что файл .Renviron установлен правильно:
more .Renviron
Запустите R/Rstudio и введите .libPaths()
и вы должны увидеть новый путь к вашей личной библиотеке.
Если у вас нет прав администратора, также может быть полезно открыть Rprofile.site
-file находится в \R-3.1.0\etc и добавьте:
.First <- function(){
.libPaths("your path here")
}
Это оценивает .libPath()
команда непосредственно при запуске
В Ubuntu рекомендуемый способ изменения пути к библиотеке по умолчанию для пользователя - установитьR_LIBS_USER
переменная в ~/.Renviron
файл.
touch ~/.Renviron
echo "R_LIBS_USER=/custom/path/in/absolute/form" >> ~/.Renviron
Просто измените папку по умолчанию для ваших библиотек R в каталоге без прав администратора, например
.libPaths("C:/R/libs")
У меня были реальные проблемы с пониманием этого. 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)
Полезно.
У меня была такая же проблема, и я столкнулся с этим . Если вы хотите создать другое местоположение
c("C:/Users/mynewlocation")
тоже должно работать. Как упоминалось здесь : «Вы должны иметь возможность щелкнуть правой кнопкой мыши значок Rstudio.exe, нажать «Свойства» и выбрать параметр, чтобы всегда запускать Rstudio от имени администратора. Убедитесь, что вы используете этот же значок всякий раз, когда хотите открыть Rstudio».
myPaths <- .libPaths() # get the paths
myPaths <- c(myPaths[2], myPaths[1]) # switch them
.libPaths(myPaths) # reassign them
Если ваша библиотека пакетов по умолчанию была изменена после установки новой версии R или любым другим способом, вы можете добавить обе библиотеки для использования всех пакетов с помощью приведенных ниже команд. Получите существующий путь к библиотеке:
.libPaths()
Теперь установите существующий и старый путь:
.libPaths(c(.libPaths(), "~/yourOldPath"))
Надеюсь, поможет.
Я читаю readme. В том, что они упомянули, используйте.libPaths() в командной строке, чтобы проверить, какие пути есть. У меня было 2 пути к библиотекам ранее. Когда я использовал команду.libpath("C:/Program Files/R/R-3.2.4revised/library"), где я хотел, она изменила путь к библиотеке. Когда я снова набрал.libPaths() в командной строке, он показал мне правильный путь. Надеюсь это поможет
Поскольку большинство ответов здесь относятся к Windows и Mac OS (и, учитывая, что я тоже боролся с этим), я решил опубликовать процесс, который помог мне решить эту проблему в моей установке Arch Linux.
Шаг 1:
- Выполните глобальный поиск в вашей системе (например, ANGRYSearch) по
запросу
Renviron
(это файл конфигурации, в котором задаются настройки для пользовательских библиотек). - Он должен вернуть только два результата по следующим путям каталогов:
-
/etc/R/
-
/usr/lib/R/etc/
ПРИМЕЧАНИЕ .Renviron
config файлы, хранящиеся в 1 и 2 (см. выше), связаны друг с другом в горячем режиме (что означает, что изменения, внесенные в один файл, будут автоматически применены [в той же форме / структуре] к другому файлу при сохранении редактируемого файла - [ вам также нужноsudo
права на сохранение файла после редактирования]).
-
Шаг 2:
- Перейдите в 1-й путь к каталогу (
/etc/R/
) и откройтеRenviron
файл с вашим любимым текстовым редактором. - Оказавшись внутри
Renviron
поиск файлов дляR_LIBS_USER
и обновите текст в разделе фигурных скобок до желаемого пути к каталогу.
ПРИМЕР:
... Изменить с (исходная запись):
R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/4.0'}
... Изменить на (желаемая запись):
R_LIBS_USER=${R_LIBS_USER-'~/Apps/R/rUserLibs'}
Шаг 3:
- Спасти
Renviron
файл, который вы только что отредактировали... ВЫПОЛНЕНО!!
getwd()
# [1] "C:/Users/..../software/My R studio"
скопируйте вышеуказанную ссылку с двойной кавычкой
.libPaths(new="C:/Users/..../software/My R studio")
Ваш путь по умолчанию будет изменен для установки пакетов
Если вы хотите навсегда изменить путь к своей библиотеке (без вызова.libPath() каждый раз при вводе в R, это работает для меня:
создайте.Rprofile под своим домашним каталогом. (~/.Rprofile)
тип
.libPaths(c( .libPaths(), "your new path" ))
в файле.Rprofile, сохраните.откройте R (любой каталог) и проверьте, просто введите
.libPaths()
, вы можете найти ваш путь к библиотеке обновлен!
Я изучал это, потому что у R были проблемы с установкой в папку по умолчанию, и вместо этого он просто помещал пакеты во временную папку. Это оказалось последнее обновление для Mcaffee Endpoint Security, которое, по-видимому, имеет проблемы с R. Вы можете отключить защиту от угроз во время установки пакетов, и она будет работать правильно.