【问题标题】:R package: install dependencies recursivelyR包:递归安装依赖项
【发布时间】:2017-01-31 14:29:57
【问题描述】:

我正在尝试使用 devtools(更准确地说,install_github)从 Github 安装我的一个 R 包。但是,即使我将参数dependencies 设置为TRUE,也不会递归安装依赖项。也就是说,没有安装依赖项的依赖项。因此,未安装该软件包。 R 发送一条消息说它找不到这些依赖项之一。在我安装完所有东西之前,它会一直发送这些消息。

这是一种标准行为吗?还是我错过了什么?我正在谈论的包是这个:https://github.com/pedrocostaferreira/BETS

我在安装其他人的软件包时从未遇到过这个问题。由于我的包有几个导入和建议,所以我的用户手动一个一个地安装每个依赖项依赖项真的很烦人。我该怎么办?

描述文件的片段:

Depends:
R (>= 3.2.0)
Imports: 
    testthat (>= 0.9.1),
    rootSolve, 
    ggplot2, 
    plotly, 
    urca, 
    TTR, 
    forecast, 
    TSA, 
    FinTS, 
    fpp, 
    stringi, 
    sqldf, 
    foreign, 
    lmtest, 
    normtest, 
    zoo, 
    rugarch,
    colorspace, 
    fracdiff, 
    tseries, 
    timeDate,
    htmlwidgets, 
    quadprog, 
    Rcpp, 
    gtable, 
    scales, 
    viridis
Suggests:
    grnn,
    Rsolnp,
    numDeriv,
    spd,
    ks,
    SkewHyperbolic,
    expm,
    DBI,
    RSQLite,
    gsubfn,
    tidyr,
    dygraphs,
    munsell,
    plyr,
    rmarkdown,
    nloptr,
    chron,
    gridExtra,
    xts

确实很大,对吧?

有些人建议,如果包已经在 CRAN 上,就不会发生。是否有意义?

【问题讨论】:

  • 这是什么包?
  • 当您使用适当的软件包安装功能(例如install.packages() 和存储库)时,会自动解析依赖关系 --- 您始终可以构建本地存储库,甚至在 GitHub 上免费,通过drat
  • @RichScriven 就是这个:github.com/pedrocostaferreira/BETS。我会在问题中包含此信息。
  • @DirkEddelbuettel 我正在使用 devtools::install_github 安装它。还是不行
  • readme 中的小脚本有用吗?

标签: r devtools r-package


【解决方案1】:

问题是DESCRIPTIONNAMESPACE 不一致。许多包在NAMESPACE 中导入,这要求它们位于DESCRIPTIONImportsDepends 字段中。但是它们在Suggests 下列出,这意味着它们是可选的,因此它们不会自动安装。但是你的包确实需要在工作之前安装它们。

方法一:将所有包移动到DESCRIPTION中的Imports,然后devtools应该全部安装。

方法2:如果你不是真的需要全部用于某些用途,并且不想全部安装,请不要将它们导入NAMESPACE。请改用完整的限定名package::functionname

阅读Namespace chapter of Hadley's book R package了解更多详情

【讨论】:

    猜你喜欢
    • 2016-11-20
    • 2016-12-30
    • 2012-06-04
    • 2013-01-16
    • 2016-01-05
    • 1970-01-01
    • 2017-06-28
    • 2019-01-17
    相关资源
    最近更新 更多