5

我正在使用内部包“MyPKG”编写可重复分析的协议。每个用户将提供自己的输入文件;除了输入之外,分析应该在相同的条件下运行。(例如,以便我们可以推断不同的结果是由于不同的输入文件)。

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

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

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

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

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

    R --vanilla
    library(MyPKG)
    ....
    

    或者

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

    R --vanilla
    library(MyPKG)
    

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

1 回答 1

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:~$ 

这是一个开始。

于 2012-09-20T19:30:59.623 回答