从Writing R Extensions Manual开始,我读到了
从R 2.14.0开始,Sweave源的首选位置是 源包的子目录vignet,但为了兼容性 使用早期版本的R,将查找晕影源 inst / doc如果没有晕影。
但是,当我创建包源的vignettes
子目录时,当我运行devtools::check()
或R CMD check
时,我会收到Package vignette(s) without corresponding PDF
的警告。如果我将小插图(.Rnw和.pdf)放在inst/doc
中,则检查完成后无需投诉。我尝试在已安装的打包中查看我的库,但没有看到任何名为vignettes
的目录。我还应该使用已弃用的位置吗?
答案 0 :(得分:20)
您将.Rnw
来源放在vignettes/
中,但是您错过了一个关键步骤;不要检查源树。预期的工作流程是构建源tarball,然后检查tarball。构建tarball将创建小插图PDF。
R CMD build ../foo/pkg
R CMD check ./pkg-0.4.tar.gz
例如,将从../foo/pkg
中的源代码构建源包tarball,在当前目录中创建.tar.gz
包,并附加包名和版本。然后在该源包上运行R CMD check
。
如果您希望为您构建的插图将其放入vignettes/
并构建源包。在将来某个日期,R Core可能会删除从inst/doc
构建小插图的功能,因此请立即使用建议的位置,并避免直接检查来源。
答案 1 :(得分:13)
我也很难解释这一点。
我认为您应该将.Rnw
文件放在vignettes/
中,并将PDF(适当压缩)放在inst/doc/
中,如果您仔细阅读,则在技术上与文档一致。 (也就是说,它说来源应该进入vignettes/
。我没有看到它在多少单词中所说的内容,你应该将相应的PDF放在inst/doc/
中,但它没有不说出来,而这种解释似乎让R CMD check
感到高兴......)
该解决方案在@ GavinSimpson的答案中(即一个人应该构建tarball然后检查它,而不是检查源目录本身)。 (我的两分钱是,如果R-core正式弃用(并最终删除)直接来源检查而不是混淆我们所有的基础......可能是最好的。)