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