我使用参数创建了一个RMarkdown文件>>> [(key, val, dct1.get(key)) for key, val in dct2.items()]
[('NL', 2, 7), ('PG', 6, None), ('MC', 10, 9)]
。
我知道如何访问file.Rmd
但不是r chunk
如果绝对没有办法,我会通过bash chunk
将参数写入文件中,然后从r chunk
中读取...
bash chunk
由于
答案 0 :(得分:3)
我见过几个选项
使用Sys.setenv
从R to bash导出变量,因此请将此行添加到R块。
Sys.setenv(params = params$myParam1)
答案 1 :(得分:1)
要将导出到环境的想法从the accepted answer应用到所有参数,只需在bash块之前将以下do.call
循环添加到R块:
```{r, echo=FALSE, message=FALSE}
for (key in names(params)) {
do.call('Sys.setenv', params[key])
}
```
答案 2 :(得分:0)
谢谢Chris S,这很好用。 我分享了我使用的解决方法(创建tmp文件)以防有人感兴趣:
---
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解决方案:
```{r, echo=FALSE}
Sys.setenv(param1=params$myParam1)
Sys.setenv(param2=params$myParam2)
```
```{bash, echo=FALSE}
echo $param1
echo $param2
```
我的解决方法:
```{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
```