2015-09-09 121 views
5

我试图创建基于下面的教程中的R降价参数化报表:http://rmarkdown.rstudio.com/developer_parameterized_reports.html#passing-parameters传递参数与R降价

我想传递一个文件路径的使用使R控制台的参数。 像这样:

render('rmarkdownfile.rmd',params= list(client= "clientdata.csv")) 

和我的降价文件看起来像这样:

title: "Liquidity Report" 
output: pdf_document 
params: client:"clientdata.csv" 
--- 
```{r plot, echo=FALSE, warning=FALSE} 
cftest <- read.csv(params$client) 

但我得到一个错误,指出:

Eror函数read.table中(文件=文件, header = header,sep = sep,quote = quote,:'file'必须是字符串或连接号码:

即使我遵循教程的步骤,Markdown似乎并不认识参数。有没有人能够在R Markdown中成功使用参数?

此外,我遵循本教程的建议,并使用R Studio预览以及r markdown和knitr的最新版本。

谢谢你的帮助!

拉斐尔

回答

4

在我的情况下,它的工作,就不得不改变在头缩进和一些名字这是我的文件夹中可用...

这里我jnk.Rmd

--- 
title: "Liquidity Report" 
output: pdf_document 
params: 
    client: "NAMESPACE" 
--- 
```{r plot, echo=FALSE, warning=FALSE} 
cftest <- read.csv(params$client) 
``` 

这就是我在控制台中所称的:render('jnk.Rmd',params= list(client= "NAMESPACE"))

+0

这是为我工作也没关系。顺便说一下,在YAML头文件名周围不需要引号。 @Rafael,你确定clientdata.csv文件和你的.Rmd文件在同一个目录下吗? – Tutuchan

+0

其实脚本抱怨变量的内容(必须是字符)而不是关于一个不存在的文件... – drmariod

+0

非常感谢!这工作完美。我对此很新,并不知道缩进会产生如此大的影响。 –

7

我喜欢做的不仅仅是指定文件名,还可以指定一个文件名ry在我的参数化报告。

--- 
title: Liquidity Report 
date: '`r strftime(Sys.time(), format = "%B %d, %Y")`' 
output: 
    pdf_document: 
    number_sections: yes 
    theme: cerulean 
    toc: yes 
    toc_depth: 2 
params: 
    directory: 
     value: x 
    file: 
     value: x 
--- 

```{r, include = F} 
knitr::opts_chunk$set(echo = F, 
         warning = F, 
         message = F) 

## Set options 
options(scipen = 999, # prevent scientific notation on large numbers 
     stringsAsFactors = F) # prevent R from turning everything to factors 

## Pull in the data 
dataset <- read.csv(paste(params$directory, params$file, sep = '/')) 
``` 

,然后在渲染功能,您可以:

rmarkdown::render('LiquidityReport.Rmd', 
        params = list(
         directory = '~/path/to/data', 
         file  = 'clientdata.csv') 
       ) 
+0

谢谢!看起来像一个伟大的方式来做到这一点。我会尝试一下。 –