Ответ 1
Просто установите переменную окружения R_LIBS
в Windows на что-то вроде
R_LIBS=C:/Program Files/R/R-2.15.2/library
Перезапустить R.
.libPaths()
[1] "\\\\per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell/R/win-library/2.15"
[2] "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
Первым пунктом является моя корпоративная папка "Мои документы", и апостроф в пути от моей фамилии вызывает все виды печали при использовании R CMD INSTALL --build
в пакете, который я создаю, не говоря уже о проблемах с использованием установленных пакетов там, когда я в сети от сети.
Я хочу использовать C:/Program Files/R/R-2.15.2/library
вместо этого по умолчанию, но я не хочу полагаться на Rprofile.site
.
> .libPaths(.libPaths()[2:3])
> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"
Это работает, но только до тех пор, пока я не перезапущу свой сеанс R, а затем вернусь к исходному .libPaths()......
Restarting R session...
> .libPaths()
[1] "\\\\per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell/R/win-library/2.15"
[2] "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
Я подумал, что .libPaths()
использовал R_LIBS_USER
> Sys.getenv("R_LIBS_USER")
[1] "//per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell/R/win-library/2.15"
Итак, я попытался отключить его, используя Sys.unsetenv("R_LIBS_USER")
, но он не сохраняется между сеансами.
Если это имеет значение, вот некоторые переменные среды, которые могут быть релевантными...
> Sys.getenv("R_HOME")
[1] "C:/PROGRA~1/R/R-215~1.2"
> Sys.getenv("R_HOME")
[1] "C:/PROGRA~1/R/R-215~1.2"
> Sys.getenv("R_USER")
[1] "//per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell"
> Sys.getenv("R_LIBS_USER")
[1] "//per-homedrive1.corp.riotinto.org/homedrive$/Tommy.O'Dell/R/win-library/2.15"
> Sys.getenv("R_LIBS_SITE")
[1] ""
Я пробовал Sys.unsetenv("R_LIBS_USER")
, но это также не касается между сеансами
Просто установите переменную окружения R_LIBS
в Windows на что-то вроде
R_LIBS=C:/Program Files/R/R-2.15.2/library
Перезапустить R.
Это немного поздний ответ на вопрос, но может быть полезен для других. Я хочу настроить свой собственный путь (и удалить один из исходных), я:
.libPaths()
внутри R для проверки текущих путей библиотеки;R.home()
или Sys.getenv("R_HOME")
;
R-Home\R-3.2.2\etc\Rprofile.site
читается каждый раз, когда R ядра запускается. Поэтому любая модификация будет устойчивой для каждого запуска R.Rprofile.site
, добавив следующее, .libPaths(.libPaths()[2])
.libPaths("d:/tmp/R/win-library/3.2")
Как это работает?
Ctr+Shift+F10
)Это будет работать каждый раз.
Я положил команду Sys.unsetenv("R_LIBS_USER")
в файл .Rprofile
в моей папке windows "own documents"
. Кажется, поможет. Моя проблема заключалась в том, что, находясь в активной среде каталогов, вы сделали R
выскочку и загрузку пакетов невероятно медленными при подключении через vpn.
Если вы хотите сделать это в файле RProfile
(@library/base/R/
), вы можете искать строки, в которых установлены переменные среды R_LIBS_*
(например, Sys.setenv(R_LIBS_SITE=....)
и Sys.setenv(R_LIBS_USER=.....)
)
Вы также можете выполнить поиск кода .libPaths()
, который устанавливает дерево библиотеки. Таким образом, вы можете достичь своей цели комбинацией комментариев, снятия с охраны и установки переменных R_LIBS
перед вызовом .libPaths()
по вашему желанию. Напр. Что-то вроде:
Sys.unsetenv("R_LIBS")
Sys.unsetenv("R_LIBS_USER")
Sys.setenv(R_LIBS_SITE = "D:/R/libs/site")
Sys.setenv(R_LIBS_USER = "D:/R/libs/user")
Sys.setenv(R_LIBS = "D:/R/libs")