2

我试图把一个包裹的松散端绑起来,我几乎只剩下小插曲了。我在包装中有四个小插曲。对于参考,我们将它们称为 Vignettes A - D。当我运行时R CMD check,我得到了错误

Error: processing vignette 'Vignette A.Rmd' failed with diagnostics:
'what' must be a character string or a function

但是,每当我使用 R Studio 中的 knit 按钮处理 Vignette A 时,文档编译得很好。

所以我开始玩,最终,我发现R CMD check无论何时我在包装中都有 Vignettes A 和 C 都失败了。但是任何时候我删除这两个小插曲中的任何一个,都R CMD check没有错误地通过。

我不知道从哪里开始。关于这两个文件共存于一个包中可能存在什么问题的任何想法?

我正在使用 R 3.2.0。有问题的包位于 Github的开发分支中

.Rcheck 日志文件的输出

* checking files in 'vignettes' ... OK
* checking examples ... OK
* checking for unstated dependencies in vignettes ... OK
* checking package vignettes in 'inst/doc' ... WARNING
Package vignettes without corresponding PDF/HTML:
   'DecisionNetworks.Rmd'
   'GettingStartedWithHydeNet.Rmd'
   'HydeNetPlots.Rmd'
   'WorkingWithHydeNetObjects.Rmd'

* checking running R code from vignettes ... OK
* checking re-building of vignette outputs ... NOTE
Error in re-building vignettes:
  ...
Loading required package: nnet
Loading required package: rjags
Loading required package: coda
Linked to JAGS 3.4.0
Loaded modules: basemod,bugs
Quitting from lines 173-176 (WorkingWithHydeNetObjects.Rmd) 
Error: processing vignette 'WorkingWithHydeNetObjects.Rmd' failed with diagnostics:
'what' must be a character string or a function
Execution halted
4

1 回答 1

2

Yuhui的提示让我找到了解决方案。起初,我跑了knitr::knit('vignettes/WorkingWithHydeNetObjects.Rmd'),一切正常。然后我尝试knit在另一个存在共存问题的小插图上运行,没有发现任何错误。然后我又跑knitWorkingWithHydeNetObjects.Rmd,这一次产生了错误。

traceback将错误识别为来自do.call. 我将一个缺失的参数传递给do.call它应该传递一个字符串的时间。通过更改另一个小插图中的和选项来更改函数的行为。

所以这个故事的寓意并不是假设每个小插曲都将建立在自己的环境中。您在一个小插图中设置的任何选项都将转移到后续小插图中。

于 2015-06-28T02:36:22.663 回答