Передача параметров в R Markdown
Я пытаюсь создать параметризованный отчет в R Markdown на основе следующего руководства: http://rmarkdown.rstudio.com/developer_parameterized_reports.html
Я пытаюсь передать путь к файлу в качестве параметра из консоли 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)
Но я получаю сообщение об ошибке:
Ошибка в read.table(file=file, header=header, sep=sep, quote=quote,: 'file' должна быть строкой символов или соединением. Вызовы:
Кажется, что Markdown не распознает параметры, хотя я и следую инструкциям руководства. Кто-нибудь смог успешно использовать параметры в R Markdown?
Кроме того, я следую рекомендациям руководства и использую предварительный просмотр R Studio, а также последние сборки r markdown и knitr.
Спасибо вам за помощь!
Рафаэль
2 ответа
В моем случае это сработало, просто пришлось изменить отступ в заголовке и некоторые имена, которые доступны в моей папке...
Вот мой 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"))
Мне нравится не только указывать имя файла, но и каталог в моих параметризованных отчетах.
---
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')
)