【问题标题】:How do I ensure R / Rcpp code is reproducible ("distributable")?如何确保 R / Rcpp 代码可重现(“可分发”)?
【发布时间】:2012-08-19 10:22:41
【问题描述】:

我为一篇论文写了一些 R 代码,依赖于一些外部包(例如,plyrreshape)并使用 inlineRcppArmadillo 编写了几个相对简单的内联 C++ 函数。

我想确保它可以在我自己的计算机 (Win64) 以外的其他计算机上“按原样”执行,以实现研究重现性目的。

我的问题:假设我包含了用于安装所需软件包的代码,RcppArmadillo(以及 Rcppinline)软件包是否足以能够编译用 RcppArmadillo 编写的函数,或者最终用户需要更改系统路径以在他的 Windows 机器上进行编译?如果没有,是否可以/建议从我端保存已编译的函数并包含在我要发送的 R 代码中?

此外,在不太可能的情况下,代码应该在一段时间后(比如几年)运行,是否足以在当前版本中包含完整的 R 安装以及相关软件包以使代码“未来-证明”?

我希望问题很清楚。

【问题讨论】:

    标签: r rcpp future-proof


    【解决方案1】:

    我认为您的意思是您的代码是“可分发的”和“可由其他人执行的”,这是一个更宽松的要求。 “可重现”意味着前面的问题是正确的,并增加了结果相同的限制(直到您选择的 epsilon)。

    对于“如何让其他人运行我的 R 代码”的常见答案是创建一个包。

    对于与 Rcpp 相关的代码,我们有一个完整的小插图专门用于使用您的 Rcpp 使用 cod 构建您自己的包。小插图称为“Rcpp-package”。

    【讨论】:

    • 谢谢,我不知道“可重现”和“可分发”之间的区别。你可能猜到了,我的意思是后者。我半信半疑的回答是“创建一个包”,这对我来说似乎有点过分尊重我的代码,但如果这是最简单、记录最多的解决方案,我会这样做。
    • 我投票赞成关于“可复制”和“可分发”的区别。我也不知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多