Сделать установку R автономной / независимой от пользователя
Я пытаюсь заставить R игнорировать c:\users\name\documents и быть полностью автономным / переносимым
Вот моя структура каталогов:
.../R/R-2.1.2.2/...
.../R/r_user/
.../R/libs_site/
Я обновил свой Rprofile.site следующим образом:
# Set the working directory
setwd( file.path( R.home() , ".." , "r_user" ) )
# set the home directory
Sys.setenv(HOME=file.path( R.home() , ".." , "r_user" ) )
# Set the site library folder
.Library.site = file.path( R.home() , ".." , "libs_site" )
когда запускается R, я запускаю.libPaths(), но все равно вижу c:/users/...
Так что, возможно, R не обновляется в соответствии с Sys.setenv выше? Решения?
4 ответа
Добавив это делает трюк:
.Library.site = file.path( R.home() , ".." , "site-library" )
.libPaths(.Library.site)
По моему опыту, создание файла с именем Renviron.site не работало на всех моих машинах с Windows, тогда как присвоение имени одному и тому же файлу.Renviron работало везде. Не уверен почему. Так что, если у вас возникли трудности с приведенными выше предложениями, попробуйте.Renviron для имени.
Пожалуйста, не стесняйтесь критически комментировать мое предложение, потому что, хотя я описываю, что сработало для меня, у меня могут быть трудности, о которых я не знаю.
По моему опыту, сработало следующее:
Платформа Windows и Linux:
Установка R путей
Узнайте пути по умолчанию: .libPaths()
Временно установите путь (в скрипте R)
.libPaths( "F:/Rlib" )
где F может быть буквой, связанной, скажем, с USB-накопителем.
Пути запросов (как Windows, так и Linux):
Sys.getenv('R_LIBS_USER')
Sys.getenv('R_LIBS')
Sys.getenv('R_USER')
Sys.getenv('R_DOC_DIR')
Sys.getenv('HOME')
Попробуйте также:
normalizePath("~")
Попробуйте также:
getwd()
setwd(dir)
getwd возвращает абсолютный путь к файлу, представляющий текущий рабочий каталог процесса R
setwd(dir) используется для установки рабочего каталога на dir.
Windows (проверено: 7x64)
Создайте файл среды с именем.Renviron, поместите его в рабочий каталог или домашний каталог:
"C:/Users/username/Documents"
Некоторые пользователи сообщают, что вместо этого файл.Renviron должен находиться в "c:/users/username/". Если вы не уверены, где его разместить, сохраните историю рабочего стола и посмотрите, где находится файл.Rhistory. Затем поместите файл.Renviron в то же место. Для сохранения истории savehistory()
# Windows .Renviron file:
R_LIBS_USER="C:/R/library"
R_USER="C:/R"
R_DOC_DIR="C:/R"
HOME="C:"
Задайте глобальный путь Мой компьютер / Свойства / Дополнительные параметры системы / Переменные среды -> Пользовательские переменные -> Путь -> Изменить c: \ R; c: \ R \ library;
Linux (протестировано на kUbuntu 12.10)
Создайте файл среды с именем Renviron.site и поместите его в:
/etc/R/
Запросите пути, чтобы убедиться, что ваша система читает файл Renviron.site.
# Linux Renviron.site file:
R_LIBS_USER="~/R/library"
R_USER="~/R"
R_DOC_DIR="~/R"
#HOME="/home" # may not be needed
Примечание: afaik файл читается снизу вверх, поэтому HOME определяется снизу. В моей настройке ~ правильно назначен /home/, поэтому я пропускаю эту последнюю строку в любом случае.
Если вы используете RStudio, вы также можете добавить файл rsession.conf в программный каталог RStudio. Следующее сработало для меня:
# Windows 7:
r-libs-user="C:/R/library"
# Kubuntu 12:
# r-libs-user=~/R/%p-library/%v
Вы можете создать файл Renviron.site
в [your R installation path]\etc
с линиями
HOME="${R_HOME}\..\r_user"
R_LIBS_SITE="${R_HOME}\..\libs_site"
которые устанавливают вторую и третью ваши настройки. Сначала можно заменить setwd(Sys.getenv("HOME"))
,
Я использовал файл Rprofile.site в [ваш путь установки R]\etc и добавил следующие строки, чтобы сделать C:/R/library моим расположением библиотеки по умолчанию при каждом запуске R:
# set a site library
.Library.site <- file.path("C:/R/library")
.libPaths(.Library.site)
Я попробовал другие ответы здесь, но ни один из них не работал с R 2.13.1 на Windows 7 64.