Knitr: R package check error, object 'opts_chunk' not found

15,625

Solution 1

For a knitr vignette that you can compile using knit() or with the "Compile PDF" button in RStudio, but that gets an

Error: object 'opts_chunk' not found Execution halted

error when checking or building the package, the package check code is not recognizing that your .Rnw file should be knited and not Sweaveed. Check that you have the following:

  1. The vignettes are in the vignette directory, if you have R 3.0.0 or higher (this was the solution to this post), cran.r-project.org/doc/manuals/r-devel/R-exts.html#Non_002dSweave-vignettes

  2. Include %\VignetteEngine{knitr::knitr} in the vignette metadata, yihui.name/knitr/demo/vignette/

  3. Specify VignetteBuilder: knitr in the package DESCRIPTION file, and

  4. Add Suggests: knitr in DESCRIPTION if knitr is needed only for vignettes

If that does not work add a require(knitr) statement before you set your global options in opts_chunk(), as Ben Bolker, Yuhui and Tyler Rinker suggested.

If in RStudio: In BOTH the Build configuration and Tool options, set the Sweave option to knitr, www.rstudio.com/ide/docs/authoring/rnw_weave

Solution 2

put library(knitr) before this opts_chunk$set(cache = TRUE, fig.path = "DFSurveyImages/", dev = "pdf")

Solution 3

You have to load the knitr library first, try this:

```{r setoptions, echo=FALSE}
library(knitr)
opts_chunk$set(cache = TRUE, fig.path = "DFSurveyImages/", dev = "pdf")```
Share:
15,625

Related videos on Youtube

Mark Otto
Author by

Mark Otto

Updated on June 06, 2022

Comments

  • Mark Otto
    Mark Otto almost 2 years

    I am getting the following error when checking my R package

    > 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
    

    Yihui Xie (knitr developer) said that was because in RStudio, knitr was not set as the method for weaving .Rnw files, https://groups.google.com/forum/?fromgroups#!topic/knitr/9672CBbc8CM. I have knitr set in both the tools and build options, in the R package DESCRIPTION file I have:

    VignetteBuilder: knitr
    Suggests: knitr
    

    and in the vignette I have:

    %\VignetteEngine{knitr}
    %\VignetteDepends{knitr,xtable,TSP}
    

    When I use compile the pdf in RStudio or use knit("KNITR.Rnw"), it compiles correctly. When I check the package, I get the above errors for each vignette. I even put

    require(knitr)
    

    before my opts_chunk$set statement. That did not help. I have also run the check from the command line and gotten the same error. Thank you for any help.

    Knitr is a useful package. I run long simulations in vignettes, and the cache makes it possible to correct errors without running the simulations over each time. It does not have the problem of trying to find the Sweave.sty file either.

    Here is my 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   
    
    • Ben Bolker
      Ben Bolker almost 11 years
      @TylerRinker , why did you delete your answer ("add library('knitr') to your code before calling opts_chunk$set()")? Seemed like a good idea to me ...
    • Yihui Xie
      Yihui Xie almost 11 years
      I think require('knitr') or library(knitr) right before opts_chunk$set() should work. Please provide a minimal reproducible example if it does not work.
  • Mark Otto
    Mark Otto almost 11 years
    @Ben, I did have it in but the result was the same, opt_chuck not found. I made a simple example to run. I did put in the require statement. Here is the dropbox link, dropbox.com/l/W0iYiBxwxHBwUB7Er43la9. (I was not such how to attach code.) I made a package using --no-vignettes and the .zip file are the files I used to make the test package. Sorry, about the delayed response I thought I had set up to be notified when I get responses. Mark
  • Tyler Rinker
    Tyler Rinker almost 11 years
    The package really isn't needed. Can you post the contents of the vignette you're making? PS GitHub would be an excellent way to share this. IF you haven't started using it already I'd suggest you give it a try.
  • Mark Otto
    Mark Otto almost 11 years
    Thanks for the advice about GitHub, but just showing the vignette is not the problem. The vignette compiles or knits just fine on in its own in RStudio or using knit(). The problem is that is will not compile in a package. I made the RTestPkg as a simple example, not as a useful code project to share.
  • Paul 'Joey' McMurdie
    Paul 'Joey' McMurdie over 10 years
    I had the same issue, and this answer seems to be the key addition that fixed the problem. I had the exact error message, but with a .Rmd vignette in the inst/doc/ directory instead of a .Rnw.
  • yuliaUU
    yuliaUU about 3 years
    You maximise your chance of getting a useful answer if you provide a minimum reproducible example. please provide your YAML header and lines that cause trouble.

Related