1. params in file index.qmd
.
---
title: '`r params$dataset`'
format: html
params:
dataset: "iris"
---
This is the {{< meta params.dataset >}} dataset.
```{r,results="asis",echo=FALSE,comment=""}
cat(paste("This is the",params$dataset),"dataset")
```
```{r}
head(get(params$dataset))
```
quarto render index.qmd
This works as intended.
But, I want to move the params to a separate file and that doesn't work.
2a. params in _metadata.yml
params is moved to a separate file _metadata.yml
which looks like this:
params:
dataset: "iris"
index.qmd
remains the same.
quarto render index.qmd --execute-params _metadata.yml
This fails with this error:
Error:
! object 'params' not found
Execution halted
2b. params in _metadata.yml
Same as above, but _metadata.yml
looks like this (added ---
):
---
params:
dataset: "iris"
---
quarto render index.qmd --execute-params _metadata.yml
Now, it's a different error.
ERROR: YAMLError: expected a single document in the stream, but found more
YAMLError: expected a single document in the stream, but found more
at load (file:///opt/quarto/bin/quarto.js:11691:11)
3a. params in _metadata.yml
metadata-files
is added to index.qmd
---
title: '`r params$dataset`'
format: html
metadata-files:
- _metadata.yml
---
```{r,results="asis",echo=FALSE,comment=""}
cat(paste("This is the",params$dataset),"dataset")
```
```{r}
head(get(params$dataset))
```
_metadata.yml
like this:
params:
dataset: "iris"
quarto render index.qmd
Error:
! object 'params' not found
Execution halted
3b. params in _metadata.yml
Same as above, but _metadata.yml
like this:
---
params:
dataset: "iris"
---
quarto render index.qmd
Error reading metadata file from _metadata.yml
ERROR: YAMLException: expected a single document in the stream, but found more
YAMLException: expected a single document in the stream, but found more
quarto 1.3.433
Thanks to the quarto developers for the solution. In addition to the params file, default params must be defined in the qmd. The params file must be in pure yaml. Metadata variables must be defined separately.
The example below works:
index.qmd
---
title: '`r params$dataset`'
format: html
params:
dataset: "iris"
dataset: iris
---
This is the {{< meta dataset >}} dataset.
```{r,results="asis",echo=FALSE,comment=""}
cat(paste("This is the",params$dataset),"dataset")
```
```{r}
head(get(params$dataset))
```
params.yml
dataset: "mtcars"
quarto render index.qmd --execute-params params.yml