根据YAML标头(参数)中定义的选项运行不同的Rchunk?

根据YAML标头(参数)中定义的选项运行不同的Rchunk?,r,r-markdown,knitr,R,R Markdown,Knitr,我正在尝试我的第一次。第一部分将根据用户选择的参数“dataSource”,从两个源之一(以及内部和外部数据库)下载数据集。不同选项所需的Rscript/代码不同 title: "Optionally DL from external vs internal database" output: html_document params: dataSource: label: "Select the database for download:" value: IntD

我正在尝试我的第一次。第一部分将根据用户选择的参数“dataSource”,从两个源之一(以及内部和外部数据库)下载数据集。不同选项所需的Rscript/代码不同

title: "Optionally DL from external vs internal database"
output: html_document
params:
  dataSource: 
    label: "Select the database for download:"
    value: IntD
    input: radio
    choiceNames: [External DB, Internal DB]
    choiceValues: [ExtD, IntD]
    inline: TRUE
下面的代码确实有效,但是有没有一种方法可以根据参数选择(例如,一些代码直接放在Rchunk头中)选择性地运行整个Rchunk?

```{r downloadData, include=TRUE}

#Can I run different rchunk or code based on the params$dataSource value??
#Can this be done directly in the Rchunk header?

if(params$dataSource=="IntD"){
 source(here::here("R", "Intdownload.R")
}else{
 source(here::here("R", "Extdownload.R")
}
```
下面列出了我已经探索过的(并且正在努力理解如何实施)其他选项这些选项中有没有更好的选项可以用来调查下载代码是否可能用于其他报表/Rscript/Rmarkdown文档?我有点困惑,什么时候这些选项可能比使用“源代码”更好

  • 在外部Rscript中创建单独的块并使用,然后根据所选的params选项调用每个块
  • 为数据下载创建单独的Rmarkdown文档,然后使用在该Rmarkdown文档中调用该文档。在主文档中使用子文档中创建的对象时,此选项是否允许您创建2个报告(1个通过调用子Rmarkdown文档,另一个用于主Rmarkdown文档)

这是否回答了您的问题?您可以在区块选项中将变量传递给
eval
。我最近在一个参数化文档中这样做了,其中需要运行或跳过块的不同组合。变量
params$to_eval
是每个区块的一个命名的true/false列表,包括如下内容:
eval=to_eval[[“health”]]
@camille-有趣,但我需要根据另一个params值的值(在使用数据库的情况下)进行评估。我发现以下内容允许我根据params值选择性地计算块
{r downloadData,eval=FALSE | | params$dataSource==“IntD”}
@Wil-这不完全是我想要的,但你确实回答了我试图找到解决方案的一个问题。谢谢。您可能想查看?
| |
,但我相信
eval=FALSE | | params$dataSource==“IntD”
将始终取
params$dataSource==“IntD”
的值,而
FALSE |
是不必要的。除非包含'FALSE | |组件,否则代码是否会失败?