【问题标题】:How do I install an R package under another name?如何以另一个名称安装 R 包?
【发布时间】:2018-09-21 15:49:24
【问题描述】:

我在 Red Hat Enterprise Linux 6 上使用 R 3.4.1。我在 /tools/bioinfo/app/R-3.4.1/lib64/R/library 下安装了包 asreml 的 3.0 版。

> library(asreml)
Loading required package: lattice
Checking for license <redacted>

> .libPaths()
[1] "/tools/bioinfo/app/R-3.4.1/lib64/R/library"

该软件包的第 4 版现已发布,但我们想比较第 3 版和第 4 版的结果。为此,我们希望将第 4 版安装在我们的系统上,名称为 asreml4。我已经下载了最新版本的 *tar.gz 文件,但是如果我这样做了

R CMD INSTALL asreml_4.1.0.93.tar.gz

它将它安装在asreml 文件夹中,覆盖旧版本。那不是我想要的。

我也试过安装在别的地方,把文件夹重命名为asreml4,然后把那个文件夹复制到/tools/bioinfo/app/R-3.4.1/lib64/R/library,然后尝试加载,但是加载的版本不对:

> library(asreml, lib.loc="/tools/bioinfo/app/R-3.4.1/lib64/R/library/asreml4")
> packageVersion("asreml")
[1] ‘3.0.1’

那么,如何将它安装在asreml4文件夹中,以便我可以使用library(asreml4) 调用它?

【问题讨论】:

  • /tools/bioinfo/app/R-3.4.1/lib64/R/library/asreml4 是包的文件夹,还是其中有 asreml 文件夹?因为lib.loc需要指向库目录。

标签: r installation


【解决方案1】:

1) 编辑DESCRIPTION下载源代码,编辑DESCRIPTION文件以具有不同的名称,然后构建并安装它。

2) 单独的库 或者将新版本安装到单独的库中,然后使用其中一个来获得所需的版本:

library(asreml, lib = ...)
library(asreml)

2a) .libPaths 一种变体是使用.libPaths(new) 更改默认库路径,发出

library(asreml)

然后改回来。

2b) dev_mode 完成库切换的一种简单方法是使用不带参数的dev_mode()(来自 devtools 包)。在发出第一个 dev_mode() 命令后,默认库变为 ~/R-dev 。此时使用普通的install.packages 命令安装新版本的asrmel,而不指定lib=,它将被安装到~/R-dev。在不指定库的情况下使用 library 加载它会导致它首先查看 ~/R-dev。然后对其进行测试,最后当您准备好切换回原始库和原始 asreml 问题 dev_mode() 时。 dev_mode() 操作默认库路径,因此您可以随时使用不带参数的.libPaths() 来检查当前默认值是什么。

library(devtools)
dev_mode() # ~/R-dev now default library
# ...
dev_mode() # restore usual default library

【讨论】:

  • 编辑DESCRIPTION文件对我的用例来说已经足够了。感谢您的详细回复。
  • 您能否详细说明您必须在何处以及如何编辑DESCRIPTION文件?我为 openxlsx 包的不同分支尝试了这个,但到目前为止没有成功,请参阅这个问题。 stackoverflow.com/questions/56168063/…
猜你喜欢
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 2012-12-22
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多