R包: install dependencies recursively

标签 r devtools r-package

我正在尝试使用 devtools 从 Github 安装我的一个 R 软件包(更准确地说,install_github)。但是,即使我将参数 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 上,就不会发生这种情况。是否有意义?

最佳答案

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

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

方法 2:如果您确实不需要所有这些用于特定用途,并且您不想全部安装它们,请不要将它们导入到 NAMESPACE 中。使用完整限定名称 package::functionname 代替。

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

关于R包: install dependencies recursively,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39648743/

相关文章:

r - 在 grid.text 中使用 pch 字符

python - rpy2 : Korean characters are not working on rpy2

r - 控制编织文档中各列的编织器输出宽度

visual-studio-2012 - TFS - 搁置集 - 您无法取消搁置对 $/Business/Path/Logic 的更改,因为工作区中的此项目存在冲突

r - 无法在新的 Ubuntu 设备上安装 R 软件包

r - 包构建/检查删除 htmlwidget 派生文件

r - 有没有办法在描述文件中自动生成 `Imports` 部分?

r - 如何在R中按顺序重新编号组ID?

r - 在 R 版本 3.0.2 上安装 Rtools

R从包内的导出函数调用内部函数