2017-04-20 15 views
3

我使用參數創建了一個RMarkdown文件file.Rmd從mbash塊訪問參數的RMarkdown

我知道如何但不能從bash chunk

一個r chunk中訪問參數如果是絕對沒有辦法這樣做,我將通過r chunk寫在一個文件中的參數,然後從bash chunk讀吧.. 。

--- 
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) 
``` 

```{r, echo=FALSE} 
print(paste("1st parameter :",params$myParam1)) 
print(paste("2nd parameter :",params$myParam2)) 
``` 

```{bash} 
# Don't know how to get parameters here 
echo $params 
``` 

感謝

回答

1

我見過幾個選項

  1. 使用Sys.setenvR to bash導出變量,因此將此行添加到R塊。

    Sys.setenv(params = params$myParam1)

  2. 使用runr package

0

感謝克里斯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) 
``` 

克里斯·解決方案:

```{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 
```