未从 Additional_repositories 安装 R 包依赖项(重新访问)

Posted

技术标签:

【中文标题】未从 Additional_repositories 安装 R 包依赖项(重新访问)【英文标题】:R package dependencies not installed from Additional_repositories (revisited) 【发布时间】:2017-03-15 19:51:57 【问题描述】:

我正在尝试准备一个包以提交给 CRAN。在我的说明文件中,我在 Depends 和 Suggests 参数中包含非 CRAN 包。为了告诉 R 在哪里可以找到非 CRAN 包,我包含 Additional_repositories 参数;我在我的程序顶部包含了一个 .onLoad 函数(即,在“zzz.R”中)。只要存在所有 Depends 和 Suggests 包,我就可以在 RStudio 中构建和检查(--as-cran),警告、注释或错误为零。然后我使用 devtools::build() 在本地创建一个 .tar.gz 文件。

为了测试本地安装是否成功,我从计算机中删除了非 CRAN 软件包并尝试安装我创建的 .tar.gz 文件。然后我收到消息:

ERROR: dependency 'smwrQW' is not available for package 'baytrends' 

我已经阅读了

R package dependencies not installed from Additional_repositories Include non-CRAN package in CRAN package http://thecoatlessprofessor.com/programming/r-data-packages-in-external-data-repositories-using-the-additional_repositories-field/ How should I deal with "package 'xxx' is not available (for R version x.y.z)" warning?

很遗憾,上述错误仍在继续。我对我使用的 url 很有信心,因为下面的 install.package 行在独立运行时有效

install.packages('smwrQW',repos=c("http://owi.usgs.gov/R"),dependencies = TRUE)

DESCRIPTION和zzz.R文件的适用位如下:

描述:

Date: 2017-03-15
Depends:
    R (>= 3.2.0),
    lubridate,
    mgcv,
    smwrQW
License: GPL-3
LazyData: TRUE
RoxygenNote: 6.0.1
Suggests:
    dataRetrieval,
    devtools,
    fitdistrplus,
    knitr,
    nlme,
    pander,
    plyr,
    rmarkdown,
    smwrBase,
    smwrGraphs,
    smwrStats,
    testthat
Additional_repositories: http://owi.usgs.gov/R
VignetteBuilder: knitr

zzz.R:

.onLoad <- function(libname = find.package("baytrends"), pkgname = "baytrends")

  repos = getOption("repos")
  repos["USGS"] = "http://owi.usgs.gov/R"
  options(repos = repos)
  invisible(repos)

  # declaration of global variables (https://***.com/questions/9439256)
  if(getRversion() >= "2.15.1")
    utils::globalVariables(c("begin", "methodsList"))
  invisible()



.onAttach <-  function(libname = find.package("baytrends"), pkgname = "baytrends")
  packageStartupMessage("This software program is preliminary or provisional and is subject to revision. ")

【问题讨论】:

【参考方案1】:

不能在 Depends: 或 Imports: 中拥有来自非标准 repos 的包。

可以在 Suggests 中使用它们:

有几个包可以做到这一点;你可以看看hurricaneexposure,它使用它来制作一个“too-large-for-CRAN”数据包hurricanexposuredata,可以从repository 使用drat 创建。

所以您必须将 smwrQR 包移动到 Suggests: 中,然后对其进行测试。

布鲁克和我有一份关于此的草稿(正在审查中),如果您给我们留言,我们可以将其发送给您——它比简短的回答更详细地说明了这一切。

【讨论】:

谢谢。我将 smwrQW 移至 Suggests: 并收到“不需要命名空间依赖项:'smwrQW'”错误。我查看了***.com/questions/13085481/… 并将 smwrQW 移至 Imports: 。这更正了构建错误,但将我留在了与原始帖子相同的位置。 您还需要将其从 NAMESPACE 中删除。没有 Depends,没有 Imports,没有 NAMESPACE——只有 Suggests。 我创建了一些其他错误。将在测试包上重新启动并实施您的建议。

以上是关于未从 Additional_repositories 安装 R 包依赖项(重新访问)的主要内容,如果未能解决你的问题,请参考以下文章

SDWebImage 库未从缓存加载图像

未从 crontab 设置路径

未从 Dropbox 检索图像

以编程方式构建 - 未从程序集中加载“TransformTemplates”任务

未从 LocalNotification.fireDate 收到通知

未从 IntentService 调用 onLocationChanged