Hi, Recently I saw a couple of cases in which the package vignettes were somewhat complicated so that Stangle() (or knitr::purl() or other tangling functions) can fail to produce the exact R code that is executed by the weaving function Sweave() (or knitr::knit(), ...). For example, this is a valid document that can pass the weaving process but cannot generate a valid R script to be source()d:
\documentclass{article} \begin{document} Assign 1 to x: \Sexpr{x <- 1} <<>>= x + 1 @ \end{document} That is because the inline R code is not written to the R script during the tangling process. When an R package vignette contains inline R code expressions that have significant side effects, R CMD check can fail because the tangled output is not correct. What I showed here is only a trivial example, and I have seen two packages that have more complicated scenarios than this. Anyway, the key thing that I want to discuss here is, since the R code in the vignette has been executed once during the weaving process, does it make much sense to execute the code generated from the tangle function? In other words, if the weaving process has succeeded, is it necessary to source() the R script again? The two options here are: 1. Do not check the R code from vignettes; 2. Or fix the tangle function so that it produces exactly what was executed in the weaving process. If this is done, I'm back to my previous question: does it make sense to run the code twice? To push this a little further, personally I do not quite appreciate literate programming in R as two separate steps, namely weave and tangle. In particular, I do not see the value of tangle, considering Sweave() (or knitr::knit()) as the new "source()". Therefore eventually I tend to just drop tangle, but perhaps I missed something here, and I'd like to hear what other people think about it. Regards, Yihui -- Yihui Xie <xieyi...@gmail.com> Web: http://yihui.name ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel