r - R CMD build 与 devtools::build() (在顶层找到的非标准文件/目录)
问题描述
我正在编写一个 R 包并使用以下命令构建和测试它:
Rscript -e "devtools::document()" && R CMD build . && Rscript -e "devtools::test();devtools::check()"
我得到一个注释:
checking top-level files
Non-standard file/directory found at top level:
‘PosteriorBootstrap_0.0.1.tar.gz’
我得到了devtools::check()
第一名还是第二名的说明。
该线程建议:
该注释告诉您,您通常不应该在包的顶层有一个名为 build 的文件。
该tar.gz
文件是由创建的R CMD build
,即使我在运行它之前将其删除,我也会收到相同的错误。
该线程
建议将tar.gz
文件添加到.Rbuildinore
,这会删除注释。
删除它的另一种方法是从 devtools 运行所有内容:
Rscript -e "devtools::document(); devtools::build(); devtools::load_all('.'); devtools::test(); devtools::check()"
然后我没有收到那张纸条。
前者有什么区别R CMD build
,devtools::build()
为什么要扔那个纸条?
解决方案
您正在组合执行相似和/或竞争功能的多个步骤。我建议阅读此书以获得最佳实践build
和check
工作流程。
当您运行R CMD build
它时,它将包构建到当前目录,这是顶级包目录。因此,当您运行检查时,它会在包根目录中看到 .tar.gz 文件,这是包中的非标准文件,因此会发出警告。devtools::build()
很聪明,并将包构建到包父目录(无论您从哪里调用它)。尝试调用与函数R CMD
混合的命令可能会产生问题,因为也会调用命令,因此您可能会在不同时间点重复操作或导致命令以不正确的顺序调用。devtools
devtools
R CMD
根据上面的链接,最佳实践工作流程是:
Rscript -e "devtools::document();devtools::check();devtools::build()"
从包根目录调用,你完全避免处理R CMD
。如果你想使用R CMD
它看起来像这样:
Rscript -e "devtools::document()" && cd .. && R CMD build PosteriorBootstrap && R CMD check PosteriorBootstrap*.tar.gz
从包根目录开始,然后切换到父目录。
推荐阅读
- tensorflow - Keras 的半监督训练
- node.js - 如何使用 node.js 将 JSON 解析为模型
- linux - 在同一目的地同时执行“rsync”
- python - 在列名上加入 Pandas 数据框匹配行值(具有相同的索引)
- python - set.difference 无论python中的换行符
- testing - 在 Safari Launcher 上设置默认网址
- angular - 重复使用屏幕进行编辑
- html - 更改移动视图中 2 列的显示顺序
- wordpress - Wordpress 点对点视频聊天(管理员到用户)插件或付费服务
- python - 无法在 MATLAB 中重现 Numpy 样式索引