Сделать установку 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.

Другие вопросы по тегам