Error: processing vignette ...: 'what' must be a character string or a function

Error: processing vignette ...: 'what' must be a character string or a function

我正在尝试整理包裹的零散部分,但我几乎只剩下小插曲了。我的包裹里有四个小插曲。作为参考,我们将它们称为 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 中的编织按钮处理 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

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

traceback 发现错误来自 do.call。当 do.call 应该传递一个字符串时,我传递了一个缺失的参数。通过更改另一个小插图中的选项来更改功能的行为。

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