首页 > 解决方案 > R包中的非标准遥控器包INLA

问题描述

我有一个需要INLA的包,它不是托管在 CRAN 或标准 GitHub 存储库上。有多个 SO 问题详细说明了如何在个人机器上安装包,例如this,甚至提到它作为包中的依赖项

通常建议在个人计算机上安装的两种方式是:

直接来自 INLA 网站

install.packages("INLA",repos=c(getOption("repos"),INLA="https://inla.r-inla-download.org/R/stable"), dep=TRUE)

来自 GitHub 主机

devtools::install_github(repo = "https://github.com/hrue/r-inla", ref = "stable", subdir = "rinla", build = FALSE)

Remotes:现在,这些对于个人机器来说很好,但在说明文件部分中不起作用。

如果我们这样做url::https://inla.r-inla-download.org/R/stable,则会给出文件扩展名无法识别的错误。

 Error: Error: Failed to install 'unknown package' from URL:
  Don't know how to decompress files with extension 

如果我们这样做github::hrue/r-inla,我不知道如何传递(或者甚至可能) DESCRIPTION 文件中的refsubdirbuild参数。

以前的软件包使用托管在 GitHub 上的 INLA 代码的只读镜像,仅用于此目的,在此repo中,然后仅使用github::inbo/INLA. 但是,此存储库已过时。

当前解决方案

我正在做的是直接引用主网页上托管的 tarball。

url::https://inla.r-inla-download.org/R/stable/src/contrib/INLA_21.02.23.tar.gz

该解决方案有效,并通过 CI 以及机器能够从那里安装和加载。唯一的问题是我需要定期更新这个 tarball 的静态链接,并且更愿意参考稳定的构建,或者直接从上面的 INLA 网站,或者hrue/inla通过其他参数传递的 repo。直接引用这些链接还有一个好处是,当我的包重新安装在一台机器上时,它会识别该机器上是否安装了最新版本的 INLA。有没有办法在DESCRIPTION文件中实现这一点?

标签: rr-package

解决方案


这不是一个完美的答案,但也许你可以做的是从新的 github 存储库中添加zip稳定分支的 url :-INLAINLA

url::https://github.com/hrue/r-inla/archive/refs/heads/stable.zip

因此,这将始终安装软件包的最新稳定版本。


推荐阅读