首页 文章

R包:递归地安装依赖项

提问于
浏览
1

我正在尝试使用devtools(更确切地说, install_github )从Github安装我的一个R包 . 但是,即使我将参数 dependencies 设置为 TRUE ,也不会递归安装依赖项 . 也就是说,没有安装依赖项的依赖项 . 因此,未安装包 . R发送一条消息,说它无法找到其中一个依赖项 . 它一直发送这些消息,直到我安装所有内容 .

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

我在安装其他人的软件包时从未遇到过这个问题 . 由于我的软件包有多个导入和建议,因此我的用户手动逐个安装每个依赖项依赖项将非常烦人 . 我该怎么办?

DESCRIPTION文件的片段:

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上,那就不会发生 . 是否有意义?

1 回答

  • 1

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

    方法1:将所有包移至 DESCRIPTION 中的 Imports ,然后 devtools 应将它们全部安装 .

    方法2:如果您不想全部安装它们,请不要在 NAMESPACE 中导入它们 . 请改用完全限定名称 package::functionname .

    有关详细信息,请阅读Namespace chapter of Hadley's book R package

相关问题