Как мне установить R_LIBS_SITE в Ubuntu, чтобы .libPaths () был правильно установлен для всех пользователей при запуске? - PullRequest
2 голосов
/ 02 июня 2011

Я настраиваю кластер, где все узлы имеют доступ к /nfs/software, поэтому хорошее место для install.packages() будет меньше /nfs/software/R.Как мне установить R_LIBS_SITE, чтобы это автоматически стало частью среды R всех пользователей?Я попытался добавить к пути, указанному для R_LIBS_SITE в /etc/R/Renviron, но help(Startup) говорит: «не изменяйте сам R_HOME / etc / Renviron», что я не уверен, что это тот же файл, поскольку R_HOME расширяется до /usr/lib/R, но никак не влияет.Создание записей в различных файлах Renviron.site и Rprofile.site, похоже, не дает желаемого эффекта.Что мне здесь не хватает?

Некоторые другие вопросы танцевали вокруг этого ( здесь и здесь , может быть, другие), но люди, кажется, соглашаются на то, что пользователь-конкретная библиотека в их HOME.

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Убедитесь, что у вас есть права владельца записи и / или группы для каталога, в который вы хотите записать.

Файл /etc/R/Renviron.site является предпочтительным выбором для локальных переопределений для /etc/R/Renviron.

Другой способ - просто ... наложить каталог при установке пакетов. Я склонен делать это на оболочке (bash, а не R) через этот скрипт, полученный из примера в пакете littler:

$ cat bin/install.r 
#!/usr/bin/env r
#
# a simple example to install one or more packages

if (is.null(argv) | length(argv)<1) {

  cat("Usage: installr.r pkg1 [pkg2 pkg3 ...]\n")
  q()

}

## adjust as necessary, see help('download.packages')
repos <- "http://cran.us.r-project.org"
#repos <- "http://cran.r-project.org"

## this makes sense on Debian where no packages touch /usr/local
lib.loc <- "/usr/local/lib/R/site-library"

install.packages(argv, lib.loc, repos)

и вы можете легко настроить помощника для своего предпочтительного местоположения. С сценарием, установленным в ~/bin/, я часто делаю

$ ~/bin/install.r xts plyr doRedis

и он добросовестно установит эти пакеты вместе с их зависимостями. В пакете littler есть похожий скрипт update.r.

0 голосов
/ 14 февраля 2013

продолжение Дирка Эддельбюттеля (спасибо Дирку!)

адаптация предложения Дирка, которое может быть выполнено в пределах R:

# R function to install one or more packages
Rinstall <- function(pkg) {
  if (is.null(pkg) | length(pkg)<1) {
    q()
  }
  if(.Platform$OS.type == "windows") {
  lib.dir <- "c:/R/library"
  } else {
  lib.dir <- "~/R/library"
  }
  repos.loc <- "http://cran.us.r-project.org"
  install.packages(pkg, lib.dir, repos.loc, dependencies=c('Depends','Suggests'))  # make sure you get dependencies
}

Использование:

Rinstall(c("package1", "package2"))

Естественно, вы хотите адаптировать repos.loc и lib.dir в зависимости от вашей системы.Работая на компьютерах с Windows и Linux, я также вставил условное выражение, чтобы проверить, на какой системе я работаю.

PS Не стесняйтесь упрощать код, я новичок.

...