我正在尝试使用 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 上,就不会发生这种情况。是否有意义?
最佳答案
问题是 DESCRIPTION
和 NAMESPACE
不一致。许多包都是在 NAMESPACE
中导入的,这要求它们位于 DESCRIPTION
的 Imports
或 Depends
字段中。不过,它们列在Suggests
下,这意味着它们是可选的,因此不会自动安装。但您的软件包在工作之前确实需要安装它们。
方法一:将所有包移至DESCRIPTION
中的Imports
,然后devtools
应该将它们全部安装。
方法 2:如果您确实不需要所有这些用于特定用途,并且您不想全部安装它们,请不要将它们导入到 NAMESPACE
中。使用完整限定名称 package::functionname
代替。
关于R包: install dependencies recursively,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39648743/