首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R CMD build at::build()(在顶层找到的非标准文件/目录)

R CMD build at::build()(在顶层找到的非标准文件/目录)
EN

Stack Overflow用户
提问于 2019-03-26 14:39:10
回答 1查看 440关注 0票数 1

我正在编写一个R包,并用以下方法构建和测试它:

代码语言:javascript
复制
Rscript -e "devtools::document()" && R CMD build . && Rscript -e "devtools::test();devtools::check()"

我收到一张纸条:

代码语言:javascript
复制
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中的所有内容:

代码语言:javascript
复制
Rscript -e "devtools::document(); devtools::build(); devtools::load_all('.'); devtools::test(); devtools::check()"

然后我就不明白那张纸条了。

R CMD builddevtools::build()之间有什么区别?为什么前者会抛出这张纸条?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-26 14:47:25

您正在组合多个执行类似和/或竞争功能的步骤。我建议阅读以获得最佳实践的buildcheck工作流。

当您运行R CMD build时,它会将包构建到当前目录,该目录是顶级包目录。因此,当您运行检查时,它会在包根中看到.tar.gz文件,这是包中要包含的一个非标准文件,因此是警告。devtools::build()是智能的,它将包构建到包目录(不管您从哪里调用它)。尝试将R CMD命令与devtools函数混合调用可能会产生问题,因为devtools也调用R CMD命令,因此您可能在不同的时间点重复操作,或者导致命令以不正确的顺序调用。

根据上面的链接,最佳实践工作流是:

代码语言:javascript
复制
Rscript -e "devtools::document();devtools::check();devtools::build()"

从包根调用,您将完全避免处理R CMD。如果您想使用R CMD,它应该如下所示:

代码语言:javascript
复制
Rscript -e "devtools::document()" && cd .. && R CMD build PosteriorBootstrap && R CMD check PosteriorBootstrap*.tar.gz

从包根目录开始,然后切换到父目录。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55359837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档