在Linux下使用旧版本R包的安全方法[关闭]

iaqfqrcu  于 2023-11-14  发布在  Linux
关注(0)|答案(1)|浏览(111)

已关闭,此问题为opinion-based,目前不接受回答。
**想改进这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

4天前关闭。
这篇文章是编辑并提交审查3天前.
Improve this question
有时候我需要运行一些旧的R代码,这些代码是我以前用的包版本,而不是我现在用的R版本。当我不需要用当前包的新函数更新和纠正脚本时,只是检查这些脚本的结果,什么是更安全的方法?直到我知道我发现了两种可能性。
1.安装多个R版本及其相关的“旧”包,并根据需要从一个版本转换到另一个版本,如果可能的话,可以从rstudio。
1.只有一个R版本(假设这是一个相对较新的版本),并在需要时使用旧软件包,以防使用旧软件包时出现依赖性问题。
第一个选择对我来说是一场灾难,因为我试图以不同的方式安装其他版本的R,还必须“调整”我的Debian发行版(靶心)接受最新的R版本,它变得不稳定,最后我不得不格式化我的PC.相关问题herehere,但在尝试建议的解决方案之前,我想知道是否有其他的选择。所以我会很感激任何关于用旧的包/函数运行旧脚本的更容易和更安全的方法的见解。

a1o7rhls

a1o7rhls1#

这很好地利用了R使用不同库路径的能力。您可以通过.libPaths()轻松设置这些路径。
作为一个具体的例子,我碰巧喜欢使用roxygen2版本6.0.1。所以我把它放在一个我的“正常”R安装不知道的目录中。在一个帮助脚本中(我也喜欢从命令行使用它),我然后这样做。

if (dir.exists("~/.R/cache/roxygen2")) {
    cat("** Using cached version 6.0.1 of roxygen2.\n")
    .libPaths("~/.R/cache")
}

## load roxygen
library(roxygen2)

字符串
并且在存在该目录的机器上,它将被前缀到库路径,并且在该会话中使用较旧的roxygen版本。
你可以很容易地概括这一点,我们已经为持续集成和其他用例做了这样的工作。
另一个例子是 e.g. 由我使用r-devel提供的,因为它有自己的库路径(这样我就可以让r-devel编译包,然后是系统编译包(这样我就不必重新构建所有包)):

$ RD -q -e '.libPaths()'
> .libPaths()
[1] "/usr/local/lib/R-devel/lib/R/library" 
[2] "/usr/local/lib/R/site-library"       
> 
$

相关问题