我正在使用内部软件包“MyPKG”编写可重复分析的协议。每个用户将提供自己的输入文件;除了输入之外,分析应在相同的条件下进行。 (例如,这样我们就可以推断不同的结果是由于不同的输入文件造成的)。
MyPKG 正在开发中,所以library(MyPKG)
将加载用户在本地库中编译的最后一个版本。它还将加载在本地库中找到的任何依赖项。
但我希望每个人都使用特定版本(MyPKG_3.14)进行此分析,同时仍然允许开发更新的版本。如果我理解正确,“R --vanilla”将为每个人加载相同的依赖项。
完成后,我们会将工作环境保存为虚拟机,以维持稳定的可重现环境。因此,临时(6 个月)解决方案就足够了。
我提出了两个可能的解决方案,但不确定其中一个是否足够。
-
要求服务器管理员将 MyPKG_3.14 安装到默认的 R 路径中,然后在协议中提供以下代码:
R --vanilla
library(MyPKG)
....
or
-
在特定库中编译 MyPKG_3.14,例如lib.loc = "/home/share/lib/R/MyPKG_3.14",然后提供
R --vanilla
library(MyPKG)
- 这两种方法是否足以确保每个人都运行相同的版本?
- 其中一个比另一个更可取吗?
- 是否还有其他可能出现的不可预见的问题?
- 是否有标准化多重分析的首选选项?
- 我应该包括对输出的测试吗
SessionInfo()
?
- 在服务器上创建一个帐户供每个人使用会更好吗?
几点:
- 使用系统范围内的软件包安装,例如R 的 Debian / Ubuntu 二进制文件(包括 CRAN 端口)将尝试使用
/usr/local/lib/R/site-library
(如果添加到拥有该目录的组,用户也可以安装)。那样每个人都得到相同的版本
- 使用系统范围的配置,例如更喜欢
$R_HOME/etc/
在下面的点文件上~/
。出于同样的原因,Debian / Ubuntu 软件包提供了软链接/etc/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:~$
这是一个开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)