运行 基于交互式参数选择的 R Markdown

Run an R Markdown based on interactive parameter choice

我正在尝试在 R Markdown 上执行以下操作。基本上,我希望用户能够在名为“Machine”的参数的两个值之间 select 并根据值 selected 运行 一些块而不是其他块。我知道“eval”选项在这里可能很有用,但我不知道如何使用它来实现我的目标。 我目前的代码是这样的(在 R Markdown 中):

    ---
title: "SUM and SAM"
output: html_document
params:
  machine:
  label: "Machine"
  value: SUM
  input: select
  choices: [SUM, SAM]
  printcode:
    label: "Display Code:"
    value: TRUE
  date: !r Sys.Date()
  data:
    label: "Input dataset:"
    value: None
    input: file
  years_of_study:
    input: slider
    min: 2018
    max: 2020
    step: 1
    round: 1
    sep: ''
    value: [2018, 2019]

---


```{r setup, include=FALSE}

############# IMPORTANT ################################### 
#Remember to Knit with Parameters here using the "Knit button"--> "Knit with Parameters".
#################################################### 

#If you only want the parameters to be shown, run the following.
#knit_with_parameters('~/Desktop/Papers/git_hub/sum_sam.Rmd')

#This must be left uncommented if we want to show the content of the Markdown file once "Knit with Parameters" is pressed.
knitr::opts_chunk$set(echo = TRUE)

现在说我想要一个仅当 machine = SAM 时才会执行的块。我该怎么做?

正在考虑类似的事情:

{r pressure, echo=FALSE, eval=params$machine}
plot(pressure)

但不起作用

谢谢,

费德里科

假设有一个名为 foo.Rmd 的文件,内容如下:

---
title: "SUM and SAM"
output: html_document
params:
  machine:
    input: select
    choices: [SUM, SAM]
    value: SUM
---

  
```{r, eval = params$machine == "SAM", echo=FALSE}
print("SAM was chosen")
```

```{r, eval = params$machine == "SUM", echo=FALSE}
print("SUM was chosen")
```

那么你可以这样做:

rmarkdown::render("foo.Rmd", params = list(machine = "SAM"))

或者,RStudio 中有选项knit with parameters

导致foo.html