2017-07-10 2 views
0

Ich versuche, einen Rmarkdown HTML-Bericht zu generieren, wobei Rmarkdown über die Befehlszeile aufgerufen wird. Ich möchte, dass der Header Informationen über die Befehlszeilenargumente übermittelt.Abrufen von Rmarkdown-Befehlszeilenargumenten im HTML-Bericht

Hier ist mein Rmarkdown Code:

```{r setup.n.args, include=FALSE} 
suppressPackageStartupMessages(library(knitr)) 
suppressPackageStartupMessages(library(DT)) 
suppressPackageStartupMessages(library(Cairo)) 
knitr::opts_chunk$set(dev="CairoPNG") 
knitr::opts_chunk$set(echo=FALSE,out.width='1000px',dpi=200,fig.keep="all") 
options(width = 1000) 
options(knitr.table.format = "html") 

args <- commandArgs(trailingOnly=T) 
parseArgs <- function(x) strsplit(sub("^--", "", x), "=") 
args.df <- as.data.frame(do.call("rbind", parseArgs(args))) 
args.list <- as.list(as.character(args.df$V2)) 
names(args.list) <- args.df$V1 
``` 

--- 
title: "`r args.list$title`" 
author: "`r args.list$author`" 
date: "`r format(Sys.time(), '%d %B, %Y, %H:%M')`" 
output: html_document 
    html_document: 
     keep_md: true 
--- 


# Table 
```{r table,warning=FALSE,message=FALSE,echo=FALSE} 
datatable(args.df,rownames = FALSE,class='cell-border stripe') 
``` 

Und hier ist mein Kommandozeilenaufruf, um es:

R -e "rmarkdown::render('test.Rmd',output_file='test.html')" --args --title=test --author='test test' 

Leider kein Header erstellt wird.

Irgendeine Idee?

Antwort

1

ändern output Teil der YAML Titelei von

output: html_document 
    html_document: 
     keep_md: true 

zu

output: 
    html_document: 
     keep_md: true 

Und --author ist falsch analysiert.

In Befehlszeile Wechsel von

--author='test test' 

zu

"--author=test test" 

wird das in Ordnung bringen.

Verwandte Themen