如何在Ubuntu上设置R_LIBS_SITE,以便在启动时为所有用户正确设置.libPaths()?

时间:2011-06-02 18:00:57

标签: r packages

我正在设置一个群集,其中所有节点都可以访问/nfs/software,因此install.packages()的好地方将位于/nfs/software/R之下。如何设置R_LIBS_SITE以使其自动成为所有用户R环境的一部分?我尝试在/etc/R/Renviron中为R_LIBS_SITE指定的路径前置,但是help(Startup)说“不要更改'R_HOME / etc / Renviron'本身”,我不确定它是{{1 }扩展为R_HOME,但在任何情况下都无效。在各种/usr/lib/RRenviron.site文件中创建条目似乎没有达到预期的效果。我在这里缺少什么?

其他一些问题围绕着这个问题展开(herehere,也许还有其他问题),但人们似乎已经满足于在Rprofile.site中拥有一个特定于用户的库。

2 个答案:

答案 0 :(得分:2)

确保您拥有要写入的目录的所有者和/或组写权限。

文件/etc/R/Renviron.site/etc/R/Renviron的本地覆盖的首选。

另一种方法是简单地......在安装包时强加目录。我倾向于在(bash而不是R)shell上通过这个脚本来实现,该脚本来自于更小的包中的一个例子:

$ 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

它将忠实地安装这些包及其依赖。较小的包具有类似的脚本update.r

答案 1 :(得分:0)

跟进Dirk Eddelbuettel(感谢Dirk!)

Dirk的建议改编自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机器上工作时,我还插入了一个条件语句来检查我所在的系统。

P.S。不要犹豫,简化代码,我是一个新手。