Skip to content

knitr::purl fail with parametrized Rmd when params is used in chunk option #1938

@cderv

Description

@cderv

From https://github.com/wlandau/targets/issues/256

When tangle = TRUE and Rmd uses parameters, it works ok if params are used in code chunks but it fails if params is used in one of the chunk option.

lines <- c(
  "---",
  "title: parameters",
  "output: html_document",
  "params:",
  "  paramcd: TRUE",
  "---",
  "",
  "```{r, eval = params$paramcd}",
  "print(params$paramcd)",
  "print(object)",
  "```"
)
writeLines(lines, "report.Rmd")
knitr::knit("report.Rmd", tangle = TRUE, quiet = TRUE)
#> Error in eval(x, envir = envir) : objet 'params' introuvable
#> [1] "report.R"
xfun::file_string("report.R")
#> params <-
#> list(paramcd = TRUE)

lines[8] <- "```{r, eval = TRUE}"
writeLines(lines, "report.Rmd")
knitr::knit("report.Rmd", tangle = TRUE, quiet = TRUE)
#> [1] "report.R"
xfun::file_string("report.R")
#> params <-
#> list(paramcd = TRUE)
#> 
#> ## ---- eval = TRUE-------------------------------------------------------------
#> print(params$paramcd)
#> print(object)

It seems like a bug.

Also, it seems knitr is not aware about parameters defined in a Rmd file when knitting. But this may be unsupported as parametrized report is a rmarkdown feature mainly

lines <- c(
  "---",
  "title: knitr with params",
  "output: html_document",
  "params:",
  "  paramcd: TRUE",
  "---",
  "",
  "```{r, eval = TRUE}",
  "str(params)",
  "```"
)
writeLines(lines, "report.Rmd")
res <- knitr::knit("report.Rmd", quiet = TRUE)
xfun::file_string(res)
#> ---
#> title: knitr with params
#> output: html_document
#> params:
#>   paramcd: TRUE
#> ---
#> 
#> ```r
#> str(params)
#> #> Error in str(params): object 'params' not found
#> ```

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureFeature requests

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions