2015-09-09 4 views
5

Sto cercando di creare un report con parametri in R Markdown sulla base della seguente tutorial: http://rmarkdown.rstudio.com/developer_parameterized_reports.html#passing-parametersPassaggio di parametri a R Markdown

Sto cercando di passare un percorso di file come parametro dalla console r utilizzando il rendering. Ti piace questa:

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

e il mio file Markdown assomiglia a questo:

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

ma ottengo un errore che dice:

Eror a read.table (file = File, header = header, sep = sep, quote = quote,: 'file' deve essere una stringa di caratteri o una connessione Chiama:

Sembra che Markdown non stia riconoscendo i parametri anche se sto seguendo i passaggi del tutorial. Qualcuno è stato in grado di utilizzare correttamente i parametri in R Markdown?

Inoltre, sto seguendo i consigli del tutorial e sto usando l'anteprima di R Studio così come le ultime versioni di markdown e knitr.

Grazie per l'aiuto!

Rafael

risposta

4

Nel mio caso ha funzionato, appena ha dovuto cambiare il rientro nell'intestazione e alcuni nomi che sono disponibili nella mia cartella ...

Qui il mio jnk.Rmd

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

E questo è quello che ho chiamato nella console: render('jnk.Rmd',params= list(client= "NAMESPACE"))

+0

Questo sta lavorando bene anche per me. A proposito, le virgolette non sono necessarie intorno al nome del file nell'intestazione YAML. @ Rafael, sei sicuro che il file clientdata.csv si trovi nella stessa directory del tuo file .Rmd? – Tutuchan

+0

In realtà lo script si lamenta del contenuto della variabile (deve essere carattere) e non di un file non esistente ... – drmariod

+0

Grazie mille! Ha funzionato perfettamente. Sono piuttosto nuovo e non avevo idea che l'indentazione potesse avere un effetto così grande. –

7

Quello che mi piace fare non è solo specificare un nome di file ma anche una directo ry sui miei rapporti parametrizzati.

--- 
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 = '/')) 
``` 

E poi nella funzione si può rendere:

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

Grazie! Sembra un ottimo modo per farlo. Ci proverò. –