如何在同一台服务器上的不同用户之间确保一致的R环境?

Dav*_*uer 5 environment r

我正在使用内部包"MyPKG"编写一个可重复分析的协议.每个用户都将提供自己的输入文件; 除输入外,分析应在相同条件下进行.(例如,我们可以推断出不同的结果是由不同的输入文件引起的).

MyPKG正在开发中,因此library(MyPKG)将加载用户在其本地库中编译的最后一个版本.它还将加载在本地库中找到的任何依赖项.

但我希望每个人都使用特定版本(MyPKG_3.14)进行此分析,同时仍允许开发更新版本.如果我理解正确,"R --vanilla"将为每个人加载相同的依赖项.

完成后,我们将工作环境保存为VM,以维持稳定的可重现环境.因此,临时(6个月)的解决方案就足够了.

我提出了两个可能的解决方案,但我不确定是否足够.

  1. 要求服务器管理员将MyPKG_3.14安装到默认的R路径中,然后在协议中提供以下代码:

    R --vanilla
    library(MyPKG)
    ....
    
    Run Code Online (Sandbox Code Playgroud)

    要么

  2. 在特定的库中编译MyPKG_3.14,例如lib.loc ="/ home/share/lib/R/MyPKG_3.14",然后提供

    R --vanilla
    library(MyPKG)
    
    Run Code Online (Sandbox Code Playgroud)

  • 这两种方法都足以确保每个人都运行相同的版本吗?
  • 一个比另一个好吗?
  • 是否还会出现其他不可预见的问题?
  • 是否有标准化多重分析的首选方案?
  • 我应该包括对输出的测试SessionInfo()吗?
  • 在服务器上创建一个帐户供每个人使用会更好吗?

Dir*_*tel 1

几点:

  • 使用系统范围内的软件包安装,例如,将尝试使用 R 的 Debian / Ubuntu 二进制文件(包括 CRAN 端口)/usr/local/lib/R/site-library(如果添加到拥有该目录的组,用户也可以安装)。这样每个人都会得到相同的版本
  • 使用系统范围的配置,例如优于$R_HOME/etc/下面的点文件~/。出于同样的原因,Debian / Ubuntu 软件包提供了软链接/etc/R/
  • 使用 R 的功能来查询其包(例如installed.packages())以报告包和版本。
  • 如果可用,请使用操作系统级别的工具来查询操作系统版本和版本。然而,这还不太标准化。

关于最后一点我家里的盒子说

> edd@max:~$ lsb_release -a | tail -4
> Distributor ID: Ubuntu
> Description:    Ubuntu 12.04.1 LTS
> Release:        12.04
> Codename:       precise
> edd@max:~$ 
Run Code Online (Sandbox Code Playgroud)

这是一个开始。