rey*_*n64 11 r reproducible-research nix nixpkgs guix
我实际上正在评估不同的解决方案,以增强/探索我的 R/Python 科学工作流程中的可重复性可重现性:具有可重现分析(绘图、分析)和纸张的数据。
如您所知,有两大 Linux 版本提供了一些解决方案:Nix 和 Guix
在 nix 中,通常描述的用 R 开发的方式是,例如,使用rWrapper和rPackages:
pkgs.rWrapper.override{ packages = with pkgs.rPackages; [tidyverse rmarkdown]; };
Run Code Online (Sandbox Code Playgroud)
我的问题是(不是那么......)简单,就像 Python 一样,众所周知,R 在可重复性方面是一场噩梦,即使在中期也是如此。为了好玩,您可以尝试使用最新版本的 R 运行 2 年以来的 ggplot2 代码...
为了提出一个可以从科学论文的相同数据产生相同结果的薄片,我有兴趣在推导中修复 R 的版本和用于计算分析或绘图的 R 包的版本。
pkgs.rWrapper.override{ packages = with pkgs.rPackages; [tidyverse rmarkdown]; };
Run Code Online (Sandbox Code Playgroud)
例如,我如何更精确地定义我想使用的,编译我的test.Rmd,只有 tidyverse 1.3.1 和 R 4.1.O ?甚至在 5 年内?
我发现 Guix 显示了 R 和 tidyverse 的不同可用包/版本:
tidyverse.1.3.1 所需的版本已明确显示:
随着rPackages在Nix我搜索的方式来实现类似的东西,即。一种将 R 或 R 包的版本显式引用到派生中的方法,但我没有找到它。
有了 rPackages , nix 开发人员已经提供了很好的基础,但也许我们需要更多......
我们如何才能使用 Nix 共同在 R 包上实现更好的再现性?我对任何想法感兴趣?
也许我们可以直接从 cran 档案中获取包的来源并编译它?例如 tidyverse :
Ps:我知道 Nix 和 Guix 都是https://archive.softwareheritage.org/ 的合作伙伴,这是一种存档和调用 cran 包的好方法:
Ps:答案也可以添加到https://nixos.wiki/wiki/R
更新 1
在与 nix discord 上的一些优秀人士讨论后,我了解到 nix 不需要版本,因为flake.nix + flake.lock存储哈希(请参阅 nix flake 元数据)将我的构建和下载与 nixpkgs 上的非常具体的提交链接起来。
但这并不能解决:
我们如何使用 nix 定义这样的东西?
更新 2
似乎有人建立了一个非官方索引来帮助人们使用 tidyverse 搜索旧版本的包 Ex:https ://lazamar.co.uk/nix-versions/ ? channel = nixpkgs-unstable & package = r-tidyverse
感谢@dram 提供有关此内容的链接和讨论。
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |