RMarkdown accessing parameter from bash chunk

别说谁变了你拦得住时间么 提交于 2019-12-05 09:48:30

I've seen a few options

  1. Use Sys.setenv to export variables from R to bash, so add this line to an R chunk.

    Sys.setenv(params = params$myParam1)

  2. Use the runr package

To apply the export-to-envirnoment idea from the accepted answer to all params, just add the following do.call loop to an R chunk before the bash chunk:

```{r, echo=FALSE, message=FALSE}
for (key in names(params)) {
  do.call('Sys.setenv', params[key])
}
```

Thanks Chris S, this works fine. I share the workaround I used (create tmp file) in case someone would be interested :

---
output: html_document
params:
  myParam1:
    label: "Choose 1st parameter"
    value: 20
    input: slider
    min: 0
    max: 100
  myParam2:
    label: "Choose 2nd parameter"
    value: "Hello"
    input: text
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

Chris solution :

```{r, echo=FALSE}
Sys.setenv(param1=params$myParam1)
Sys.setenv(param2=params$myParam2)
```
```{bash, echo=FALSE}
echo $param1
echo $param2
```

My workaround :

```{r}
param1 <- paste0("param1=\"",params$myParam1,"\"")
param2 <- paste0("param2=\"",params$myParam2,"\"")

# Write parameters in temporary file
fileConn <- file("~/params.tmp")
writeLines(c(param1,param2), fileConn)
close(fileConn)
```

```{bash, echo=FALSE}
. ~/params.tmp
rm ~/params.tmp
echo $param1
echo $param2
```
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!