R包:递归地安装依赖项

时间:2016-09-22 20:56:48

标签: r devtools r-package

我试图使用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 个答案:

答案 0 :(得分:1)

问题是DESCRIPTIONNAMESPACE存在不一致。许多软件包都在NAMESPACE中导入,要求它们位于Imports的{​​{1}}或Depends字段中。但是它们列在DESCRIPTION下,这意味着它们是可选的,因此它们不会自动安装。但是你的包需要在工作之前安装它们。

方法1:将所有包转移到Suggests中的Imports,然后DESCRIPTION应将它们全部安装。

方法2:如果您确实不需要将它们全部用于特定用途,并且您不想全部安装它们,请不要在devtools中导入它们。请改为使用完全限定名称NAMESPACE

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