On 09/07/2018 3:24 PM, Witold E Wolski wrote:> Dear Yihui, > > Thank you for the valuable questions. > > sample_analysis is a "tibble" while > configuration is an "R6" class. > But I also have parametrized reports where I pass R reference classes > as arguments. > > This is the Rmd yaml params part corresponding to the error message. > > params: > configuration: !r get(data(skylineconfig)) > data: !r get(data(sample_analysis)) > > Might the R6 class which I pass to configuration the source of the > problem here? I have heard somewhere that R6 uses environments to > implemented some features. > > > > There is also a further problem I am encountering reproducible when > running devtools::install() or R CMD INSTALL > > ** installing vignettes > 'tr_srm_summary.Rmd' using 'UTF-8' > Warning in data(skylineconfig) : data set 'skylineconfig' not found > Error in get(data(skylineconfig)) : object 'skylineconfig' not foundYou likely need to specify the package name, e.g. data("skylineconfig", package = "yourpackage") Also see my suggestion to use quote() to delay evaluation:> params: > configuration: !r quote(get(data(sample_analysis))) > > in the YAML will set configuration to the expression needed to get the > environment; > > eval(params$configuration)Duncan Murdoch
Dear Duncan, Was close to giving up to use the parameterized rmarkown as vignettes. But your suggestions to use quote and eval, as well as to use the package parameter in data made it work, with all devtools::install,check,build and build_vignettes as well as with R CMD ... etc. But most importantly it also still works with: rmarkdown::render("vignettes/tr_srm_summary.Rmd", params=list(configuration=skylineconfig, data=sample_analysis )) THANK YOU. This is how my vignette header looks (see below) and it works. --- title: "Titel" author: "WEW at FGCZ.ETHZ.CH" date: "`r Sys.Date()`" output: pdf_document: default html_document: default params: configuration: !r quote(get(data(skylineconfig, package="myPackage"))) data: !r quote(get(data(sample_analysis, package="myPackage"))) vignette: > %\VignetteIndexEntry{Summarize Peptide Level Measurements} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} library(tidyverse) knitr::opts_chunk$set(echo = FALSE, message=FALSE) data <- eval(params$data) configuration <- eval(params$configuration) ``` Have a great evening. regards Witek On 9 July 2018 at 21:32, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:> On 09/07/2018 3:24 PM, Witold E Wolski wrote: >> >> Dear Yihui, >> >> Thank you for the valuable questions. >> >> sample_analysis is a "tibble" while >> configuration is an "R6" class. >> But I also have parametrized reports where I pass R reference classes >> as arguments. >> >> This is the Rmd yaml params part corresponding to the error message. >> >> params: >> configuration: !r get(data(skylineconfig)) >> data: !r get(data(sample_analysis)) >> >> Might the R6 class which I pass to configuration the source of the >> problem here? I have heard somewhere that R6 uses environments to >> implemented some features. >> >> >> >> There is also a further problem I am encountering reproducible when >> running devtools::install() or R CMD INSTALL >> >> ** installing vignettes >> 'tr_srm_summary.Rmd' using 'UTF-8' >> Warning in data(skylineconfig) : data set 'skylineconfig' not found >> Error in get(data(skylineconfig)) : object 'skylineconfig' not found > > > You likely need to specify the package name, e.g. > > data("skylineconfig", package = "yourpackage") > > Also see my suggestion to use quote() to delay evaluation: > > >> params: >> configuration: !r quote(get(data(sample_analysis))) >> >> in the YAML will set configuration to the expression needed to get the >> environment; >> >> eval(params$configuration) > > > Duncan Murdoch-- Witold Eryk Wolski
I wonder if get(data(foo, package="myPackage")) could be rewritten as myPackage::foo. The latter will be a little more rigorous, because data(foo) simply returns a character string "foo", so you are essentially calling get ("foo"), and the default get(, inherits FALSE) may cause you trouble sometimes. Anyway, the value returned by quote() can be represented when calling dput(), so knitr can support it when generating the R script from the vignette. Another way to specify the params defaults could be: --- params: foo: null --- ```{r} if (is.null(params$foo)) params$foo = myPackage::foo ``` Regards, Yihui -- https://yihui.name On Mon, Jul 9, 2018 at 3:11 PM, Witold E Wolski <wewolski at gmail.com> wrote:> Dear Duncan, > > Was close to giving up to use the parameterized rmarkown as vignettes. > But your suggestions to use quote and eval, as well as to use the > package parameter in data > made it work, with all devtools::install,check,build and > build_vignettes as well as with R CMD ... etc. > But most importantly it also still works with: > rmarkdown::render("vignettes/tr_srm_summary.Rmd", > params=list(configuration=skylineconfig, data=sample_analysis )) > > THANK YOU. > > This is how my vignette header looks (see below) and it works. > > --- > title: "Titel" > author: "WEW at FGCZ.ETHZ.CH" > date: "`r Sys.Date()`" > output: > pdf_document: default > html_document: default > params: > configuration: !r quote(get(data(skylineconfig, package="myPackage"))) > data: !r quote(get(data(sample_analysis, package="myPackage"))) > vignette: > > %\VignetteIndexEntry{Summarize Peptide Level Measurements} > %\VignetteEngine{knitr::rmarkdown} > %\VignetteEncoding{UTF-8} > --- > > > ```{r setup, include=FALSE} > library(tidyverse) > > knitr::opts_chunk$set(echo = FALSE, message=FALSE) > data <- eval(params$data) > configuration <- eval(params$configuration) > ``` > > Have a great evening. > > regards > Witek > > On 9 July 2018 at 21:32, Duncan Murdoch <murdoch.duncan at gmail.com> wrote: >> On 09/07/2018 3:24 PM, Witold E Wolski wrote: >>> >>> Dear Yihui, >>> >>> Thank you for the valuable questions. >>> >>> sample_analysis is a "tibble" while >>> configuration is an "R6" class. >>> But I also have parametrized reports where I pass R reference classes >>> as arguments. >>> >>> This is the Rmd yaml params part corresponding to the error message. >>> >>> params: >>> configuration: !r get(data(skylineconfig)) >>> data: !r get(data(sample_analysis)) >>> >>> Might the R6 class which I pass to configuration the source of the >>> problem here? I have heard somewhere that R6 uses environments to >>> implemented some features. >>> >>> >>> >>> There is also a further problem I am encountering reproducible when >>> running devtools::install() or R CMD INSTALL >>> >>> ** installing vignettes >>> 'tr_srm_summary.Rmd' using 'UTF-8' >>> Warning in data(skylineconfig) : data set 'skylineconfig' not found >>> Error in get(data(skylineconfig)) : object 'skylineconfig' not found >> >> >> You likely need to specify the package name, e.g. >> >> data("skylineconfig", package = "yourpackage") >> >> Also see my suggestion to use quote() to delay evaluation: >> >> >>> params: >>> configuration: !r quote(get(data(sample_analysis))) >>> >>> in the YAML will set configuration to the expression needed to get the >>> environment; >>> >>> eval(params$configuration) >> >> >> Duncan Murdoch > > > > -- > Witold Eryk Wolski