Knitr:R包检查错误,找不到对象'opts_chunk'

Mar*_*tto 21 vignette r rstudio knitr

检查我的R包时出现以下错误

> Error: could not find function "locdata"
> Execution halted
> when running code in ‘DFSurvey.Rnw’
>   ...
> 
> > opts_chunk$set(cache = TRUE, fig.path = "DFSurveyImages/", dev = "pdf")
> 
>   When sourcing ‘DFSurvey.R’:
> Error: object 'opts_chunk' not found
> Execution halted
Run Code Online (Sandbox Code Playgroud)

谢毅辉(knitr developer)说是因为在RStudio中,knitr没有被设置为编织方法.Rnw文件,https: //groups.google.com/forum/ fromgroups#!topic/knitr/9672CBbc8CM .我在工具和构建选项中都设置了knitr,在R包描述文件中我有:

VignetteBuilder: knitr
Suggests: knitr
Run Code Online (Sandbox Code Playgroud)

在我的小插曲中:

%\VignetteEngine{knitr}
%\VignetteDepends{knitr,xtable,TSP}
Run Code Online (Sandbox Code Playgroud)

当我在RStudio中使用编译pdf或使用knit("KNITR.Rnw")时,它会正确编译.当我检查包时,我得到每个插图的上述错误.我甚至放了

require(knitr)
Run Code Online (Sandbox Code Playgroud)

在我的opts_chunk $ set语句之前.这没有用.我也从命令行运行检查并得到了同样的错误.感谢您的任何帮助.

Knitr是一个有用的包.我在小插图中运行了很长时间的模拟,并且缓存可以在不运行每次模拟的情况下纠正错误.它没有试图找到Sweave.sty文件的问题.

这是我的 sessionInfo()

> R version 3.0.0 (2013-04-03)
> Platform: x86_64-apple-darwin10.8.0 (64-bit)
> 
> locale:
> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
> 
> attached base packages:
> [1] tcltk     grid      stats     graphics  grDevices utils     datasets  methods  
> [9] base     
> 
> other attached packages:
>  [1] DualFrame_0.5         xtable_1.7-1          TSP_1.0-7            
>  [4] maptools_0.8-23       lattice_0.20-15       foreign_0.8-53       
>  [7] spsurvey_2.5          sp_1.0-9              stringr_0.6.2        
> [10] sqldf_0.4-6.4         RSQLite.extfuns_0.0.1 chron_2.3-43         
> [13] gsubfn_0.6-5          proto_0.3-10          RSQLite_0.11.3       
> [16] DBI_0.2-7             knitr_1.2             gpclib_1.5-5         
> 
> loaded via a namespace (and not attached):
> [1] deldir_0.0-22  digest_0.6.3   evaluate_0.4.3 formatR_0.7    MASS_7.3-26   
> [6] rgeos_0.2-17   tools_3.0.0   
Run Code Online (Sandbox Code Playgroud)

Tyl*_*ker 50

library(knitr)在这之前opts_chunk$set(cache = TRUE, fig.path = "DFSurveyImages/", dev = "pdf")

  • **注意**:易辉编辑了这个所以要注意. (4认同)

Mar*_*tto 0

对于 knitr 小插图,您可以使用 knit() 或使用 RStudio 中的“编译 PDF”按钮进行编译,但这会导致

错误:找不到对象“opts_chunk”执行停止

检查或构建包时出错,包检查代码无法识别您的 .Rnw 文件应该被knit编辑而不是Sweave被编辑。检查您是否具备以下条件:

  1. 小插图位于 vignette 目录中,如果您有 R 3.0.0 或更高版本(这是本文的解决方案),cran.r-project.org/doc/manuals/r-devel/R-exts.html#Non_002dSweave -小插图

  2. 包含%\VignetteEngine{knitr::knitr}在 vignette 元数据中,yihui.name/knitr/demo/vignette/

  3. VignetteBuilder: knitr在包描述文件中指定,并且

  4. Suggests: knitr如果仅需要 knitr,请添加“描述”

如果这不起作用,请在设置全局选项之前添加一个 require(knitr) 语句opts_chunk(),如 Ben Bolker、Yuhui 和 Tyler Rinker 建议的那样。

如果在 RStudio 中:在构建配置和工具选项中,将 Sweave 选项设置为 knit,www.rstudio.com/ide/docs/authoring/rnw_weave