错误:处理晕影......:'what'必须是字符串或函数

时间:2015-06-26 21:17:51

标签: r knitr vignette

我正试图捆绑一个包裹的松散末端,而我几乎只是对小插曲。我在包中有四个小插曲。对于参考,我们称之为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

1 个答案:

答案 0 :(得分:2)

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

traceback将错误标识为来自do.call。当它应该传递一个字符串时,我正在向do.call传递一个缺失的参数。通过更改其他插图中的选项来更改函数的行为。

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