Berry, Charles
2021-Sep-19 17:28 UTC
[R] Cacheing of functions from libraries other than the base in Rmarkdown
Chris,> On Sep 18, 2021, at 12:26 PM, Chris Evans <chrishold at psyctc.org> wrote: > > This question may belong somewhere else, if so, please signpost me and accept apologies. > > What is happening is that I have a large (for me, > 3k lines) Rmarkdown file with many R code blocks (no other code or > engine is used) working on some large datasets. I have some inline r like > > There are `r n_distinct(tibDat$ID)` participants and `r nrow(tibDat)` rows of data. > > What I am finding is that even if one knit has worked fine and I change something somewhere and knit again, the second > knit is often failing with an error like > > n_distinct(tibDat$ID) : could not find function "n_distinct" > > This is not happening for functions like nrow() from base R and it mostly seems to happen to functions from the tidyverse. > > I think what is happening is some sort of cache corruption presumably caused by the memory demands. I am pretty sure I've > seen this before but a long time ago and dealt with it by deleting the files and cache folders created by the knit.Caching things that depend on libraries is known to be tricky. Specifically, it is advised that "loading packages via library() in a cached chunk and these packages will be used by uncached chunks" is something you should not do. I suspect that this is the problem with your inline chunk. I have to reread things like: https://yihui.org/knitr/demo/cache/ and relevant parts of the manual to be sure I didn't mess something up and maybe you should look at that and the manual yet another time. HTH, Chuck
Jeff Newmiller
2021-Sep-19 17:45 UTC
[R] Cacheing of functions from libraries other than the base in Rmarkdown
I avoid knitr (Rmarkdown uses knitr) caching like the plague. If I want caching, I do it myself (with or without the aid of one of a data caching package). On September 19, 2021 10:28:49 AM PDT, "Berry, Charles" <ccberry at health.ucsd.edu> wrote:>Chris, > > >> On Sep 18, 2021, at 12:26 PM, Chris Evans <chrishold at psyctc.org> wrote: >> >> This question may belong somewhere else, if so, please signpost me and accept apologies. >> >> What is happening is that I have a large (for me, > 3k lines) Rmarkdown file with many R code blocks (no other code or >> engine is used) working on some large datasets. I have some inline r like >> >> There are `r n_distinct(tibDat$ID)` participants and `r nrow(tibDat)` rows of data. >> >> What I am finding is that even if one knit has worked fine and I change something somewhere and knit again, the second >> knit is often failing with an error like >> >> n_distinct(tibDat$ID) : could not find function "n_distinct" >> >> This is not happening for functions like nrow() from base R and it mostly seems to happen to functions from the tidyverse. >> >> I think what is happening is some sort of cache corruption presumably caused by the memory demands. I am pretty sure I've >> seen this before but a long time ago and dealt with it by deleting the files and cache folders created by the knit. > >Caching things that depend on libraries is known to be tricky. > >Specifically, it is advised that "loading packages via library() in a cached chunk and these packages will be used by uncached chunks" is something you should not do. I suspect that this is the problem with your inline chunk. > >I have to reread things like: > > https://yihui.org/knitr/demo/cache/ > >and relevant parts of the manual to be sure I didn't mess something up and maybe you should look at that and the manual yet another time. > >HTH, > >Chuck > >______________________________________________ >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code.-- Sent from my phone. Please excuse my brevity.