Dear Duncan, Following your advice (Thank you for it) I did include into the vignettes params: configuration: !r get(data(sample_analysis)) data: !r get(data(skylineconfig)) And everything seemed (see below) to work fine. devtools::build_vignettes() builds the vignettes. Runs with NO error. By this the .Rmd file, html file and corresponding .R files is being placed into the inst/doc directory. However, when I did want to check the package by running devtools::check(build_args="--no-build-vignettes") The following warning is shown: Warning: parse error in file 'C:/Users/wolski/AppData/Local/Temp/Rtmp4QanHv/SRMService.Rcheck/SRMService/doc/tr_srm_summary.R': /Users/wolski/AppData/Local/Temp/Rtmp4QanHv/SRMService.Rcheck/SRMService/doc/tr_srm_summary.R:2:22: unexpected '<' 1: params <- 2: list(configuration = < This is how the start of the .R file produced from the vignette looks like. params <- list(configuration = <environment>, data = structure(list(protein_Id c("CiRT standards", I am worried that this is the end of this road with parameterized vignettes then? What do you think? regards Witek On 2 July 2018 at 18:21, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:> On 02/07/2018 11:22 AM, Witold E Wolski wrote: >> >> Hello, >> >> Thank you for the questions as well as remaining me of the default >> parameters in the yaml session. >> Indeed this seems to be the solution. >> >> >> But how would I assign package data as a default parameter? >> So originally I thought to render the markdown with : >> >> <code> >> data(sample_analysis) >> data(skylineconfig) >> x <- rmarkdown::render("report.Rmd", output_format = "html_document", >> params = list(data = sample_analysis, >> configuration >> skylineconfig),envir = new.env()) >> <code> >> >> I do not think I can write: >> >> params: >> configuration: !r data(sample_analysis) >> data: !r data(skylineconfig) >> >> since data does not return the package just puts them in the env as a >> side effect. Is there a different base function to achieve it. > > > I think you could use > > params: > configuration: !r get(data(sample_analysis)) > data: !r get(data(skylineconfig)) > > but if that doesn't work, a longer version is > > params: > configuration: !r {data(sample_analysis); sample_analysis} > data: !r {data(skylineconfig); skylineconfig} > > Duncan Murdoch > > >> >> >> Thank you >> Witek >> >> >> >> >> On 2 July 2018 at 16:56, Duncan Murdoch <murdoch.duncan at gmail.com> wrote: >>> >>> On 02/07/2018 10:30 AM, Witold E Wolski wrote: >>>> >>>> >>>> Hello, >>>> >>>> I have a package which includes some parameterized r-markdown report >>>> which I would also like to build as package vignettes. >>>> >>>> Is there a way to run the parameterized vignette creation with the >>>> package build or package check? >>> >>> >>> >>> >>> Doesn't the usual method work? You can specify defaults for parameters >>> in >>> the YAML header; I'd expect those to be the parameter values that get >>> used. >>> >>> You can give instructions to your users on how to rebuild the reports >>> with >>> different parameters. >>> >>> Duncan Murdoch >>> >>>> >>>> Thank you >>>> >>> >> >> >> >-- Witold Eryk Wolski
On 09/07/2018 8:49 AM, Witold E Wolski wrote:> Dear Duncan, > > Following your advice (Thank you for it) I did include into the vignettes > params: > configuration: !r get(data(sample_analysis)) > data: !r get(data(skylineconfig)) > > And everything seemed (see below) to work fine. > devtools::build_vignettes() builds the vignettes. > > Runs with NO error. By this the .Rmd file, html file and corresponding > .R files is being placed into the inst/doc directory. > > However, when I did want to check the package by running > devtools::check(build_args="--no-build-vignettes") > > The following warning is shown: > > Warning: parse error in file > 'C:/Users/wolski/AppData/Local/Temp/Rtmp4QanHv/SRMService.Rcheck/SRMService/doc/tr_srm_summary.R': > /Users/wolski/AppData/Local/Temp/Rtmp4QanHv/SRMService.Rcheck/SRMService/doc/tr_srm_summary.R:2:22: > unexpected '<' > 1: params <- > 2: list(configuration = < > > This is how the start of the .R file produced from the vignette looks like. > > params <- > list(configuration = <environment>, data = structure(list(protein_Id > c("CiRT standards", > > I am worried that this is the end of this road with parameterized > vignettes then? What do you think?Interesting. The issue is that the value being assigned to configuration is an environment, and whatever code produces those lines in tr_srm_summary.R isn't deparsing it into something parseable. (This isn't a big surprise: dput and deparse both fail at that.) I'd guess a solution is not to save sample_analysis as an environment, but maybe you didn't know you were doing that since some other structures are implemented as environments. Perhaps you could use configuration: !r as.list(get(data(sample_analysis))) and then when you need to use it, convert it back to the original type? Duncan Murdoch> > regards > Witek > > > > > > On 2 July 2018 at 18:21, Duncan Murdoch <murdoch.duncan at gmail.com> wrote: >> On 02/07/2018 11:22 AM, Witold E Wolski wrote: >>> >>> Hello, >>> >>> Thank you for the questions as well as remaining me of the default >>> parameters in the yaml session. >>> Indeed this seems to be the solution. >>> >>> >>> But how would I assign package data as a default parameter? >>> So originally I thought to render the markdown with : >>> >>> <code> >>> data(sample_analysis) >>> data(skylineconfig) >>> x <- rmarkdown::render("report.Rmd", output_format = "html_document", >>> params = list(data = sample_analysis, >>> configuration >>> skylineconfig),envir = new.env()) >>> <code> >>> >>> I do not think I can write: >>> >>> params: >>> configuration: !r data(sample_analysis) >>> data: !r data(skylineconfig) >>> >>> since data does not return the package just puts them in the env as a >>> side effect. Is there a different base function to achieve it. >> >> >> I think you could use >> >> params: >> configuration: !r get(data(sample_analysis)) >> data: !r get(data(skylineconfig)) >> >> but if that doesn't work, a longer version is >> >> params: >> configuration: !r {data(sample_analysis); sample_analysis} >> data: !r {data(skylineconfig); skylineconfig} >> >> Duncan Murdoch >> >> >>> >>> >>> Thank you >>> Witek >>> >>> >>> >>> >>> On 2 July 2018 at 16:56, Duncan Murdoch <murdoch.duncan at gmail.com> wrote: >>>> >>>> On 02/07/2018 10:30 AM, Witold E Wolski wrote: >>>>> >>>>> >>>>> Hello, >>>>> >>>>> I have a package which includes some parameterized r-markdown report >>>>> which I would also like to build as package vignettes. >>>>> >>>>> Is there a way to run the parameterized vignette creation with the >>>>> package build or package check? >>>> >>>> >>>> >>>> >>>> Doesn't the usual method work? You can specify defaults for parameters >>>> in >>>> the YAML header; I'd expect those to be the parameter values that get >>>> used. >>>> >>>> You can give instructions to your users on how to rebuild the reports >>>> with >>>> different parameters. >>>> >>>> Duncan Murdoch >>>> >>>>> >>>>> Thank you >>>>> >>>> >>> >>> >>> >> > > >
So far you haven't provided a reproducible example yet. I wonder what exactly the object `sample_analysis` is. Sounds like it is an environment. If that is the case, devtools::build_vignettes() will tangle (for the meaning of "tangle", see ?tools::buildVignette) your vignette into an invalid R script. Environments cannot be represented via dput(), so knitr's purl() (eventually called by the vignette engine) cannot really create a valid R script when your vignette contains `params` that uses environment values. Most other types of values should be fine. Regards, Yihui -- https://yihui.name On Mon, Jul 9, 2018 at 10:37 AM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:> On 09/07/2018 8:49 AM, Witold E Wolski wrote: >> >> Dear Duncan, >> >> Following your advice (Thank you for it) I did include into the vignettes >> params: >> configuration: !r get(data(sample_analysis)) >> data: !r get(data(skylineconfig)) >> >> And everything seemed (see below) to work fine. >> devtools::build_vignettes() builds the vignettes. >> >> Runs with NO error. By this the .Rmd file, html file and corresponding >> .R files is being placed into the inst/doc directory. >> >> However, when I did want to check the package by running >> devtools::check(build_args="--no-build-vignettes") >> >> The following warning is shown: >> >> Warning: parse error in file >> >> 'C:/Users/wolski/AppData/Local/Temp/Rtmp4QanHv/SRMService.Rcheck/SRMService/doc/tr_srm_summary.R': >> >> /Users/wolski/AppData/Local/Temp/Rtmp4QanHv/SRMService.Rcheck/SRMService/doc/tr_srm_summary.R:2:22: >> unexpected '<' >> 1: params <- >> 2: list(configuration = < >> >> This is how the start of the .R file produced from the vignette looks >> like. >> >> params <- >> list(configuration = <environment>, data = structure(list(protein_Id >> c("CiRT standards", >> >> I am worried that this is the end of this road with parameterized >> vignettes then? What do you think? > > > Interesting. The issue is that the value being assigned to configuration is > an environment, and whatever code produces those lines in tr_srm_summary.R > isn't deparsing it into something parseable. (This isn't a big surprise: > dput and deparse both fail at that.) > > I'd guess a solution is not to save sample_analysis as an environment, but > maybe you didn't know you were doing that since some other structures are > implemented as environments. > > Perhaps you could use > > configuration: !r as.list(get(data(sample_analysis))) > > and then when you need to use it, convert it back to the original type? > > Duncan Murdoch >> >> >> regards >> Witek >> >> >> >> >> >> On 2 July 2018 at 18:21, Duncan Murdoch <murdoch.duncan at gmail.com> wrote: >>> >>> On 02/07/2018 11:22 AM, Witold E Wolski wrote: >>>> >>>> >>>> Hello, >>>> >>>> Thank you for the questions as well as remaining me of the default >>>> parameters in the yaml session. >>>> Indeed this seems to be the solution. >>>> >>>> >>>> But how would I assign package data as a default parameter? >>>> So originally I thought to render the markdown with : >>>> >>>> <code> >>>> data(sample_analysis) >>>> data(skylineconfig) >>>> x <- rmarkdown::render("report.Rmd", output_format = "html_document", >>>> params = list(data = sample_analysis, >>>> configuration >>>> skylineconfig),envir = new.env()) >>>> <code> >>>> >>>> I do not think I can write: >>>> >>>> params: >>>> configuration: !r data(sample_analysis) >>>> data: !r data(skylineconfig) >>>> >>>> since data does not return the package just puts them in the env as a >>>> side effect. Is there a different base function to achieve it. >>> >>> >>> >>> I think you could use >>> >>> params: >>> configuration: !r get(data(sample_analysis)) >>> data: !r get(data(skylineconfig)) >>> >>> but if that doesn't work, a longer version is >>> >>> params: >>> configuration: !r {data(sample_analysis); sample_analysis} >>> data: !r {data(skylineconfig); skylineconfig} >>> >>> Duncan Murdoch >>> >>> >>>> >>>> >>>> Thank you >>>> Witek >>>> >>>> >>>> >>>> >>>> On 2 July 2018 at 16:56, Duncan Murdoch <murdoch.duncan at gmail.com> >>>> wrote: >>>>> >>>>> >>>>> On 02/07/2018 10:30 AM, Witold E Wolski wrote: >>>>>> >>>>>> >>>>>> >>>>>> Hello, >>>>>> >>>>>> I have a package which includes some parameterized r-markdown report >>>>>> which I would also like to build as package vignettes. >>>>>> >>>>>> Is there a way to run the parameterized vignette creation with the >>>>>> package build or package check? >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Doesn't the usual method work? You can specify defaults for parameters >>>>> in >>>>> the YAML header; I'd expect those to be the parameter values that get >>>>> used. >>>>> >>>>> You can give instructions to your users on how to rebuild the reports >>>>> with >>>>> different parameters. >>>>> >>>>> Duncan Murdoch >>>>> >>>>>> >>>>>> Thank you >>>>>> >>>>> >>>> >>>> >>>> >>> >> >> >> > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel