2015-04-26 5 views
5

Ich benutze RStudio mit knitr, etc, um reproduzierbare Berichte zu erstellen, und möchte die besten Versionen für Word-Dokumente und PDF haben - ich arbeite lieber mit LaTeX, Die Endnutzer bevorzugen jedoch die Flexibilität editierbarer Word-Dokumente.Capture 'output_format' von rmarkdown :: render als Variable

Ich habe geschrieben eine ifelse Aussage, die im Wesentlichen sagt: ‚Wenn dieser render ed als Word-Dokument ist, eine kable Tabelle in Abschlag schaffen, sonst schafft die kable Tabelle in LaTeX und dann manipulieren, um die Tabelle besser (schraffierte Zeilen aussehen , etc)'.

Ich verstehe nicht, wie der rmarkdown::render Ing Prozess funktioniert, um die output_format zu erfassen, aber gibt es eine Möglichkeit, dies als eine Variable zu speichern und in der ifelse Anweisung zu verwenden?

wäre ein minimales Beispiel sein, diesen Code als test.Rmd zu speichern:

format <- output_format #(somehow captured as a variable) 

printTable <- function(data = df, format = format){ 

if (format %in% 'pdf_document') { 

    # create nice latex table 

} else { 

    # create markdown table 

} 
} 

Dann, wenn Sie diesen Code ausführen:

rmarkdown::render(input = "test.Rmd", output_format = c("word_document", "pdf_document")) 

die verschiedenen Versionen des Berichts würde die korrekten Tabellen enthalten haben.

Antwort

7

Sie können über knitr::opts_knit$get("rmarkdown.pandoc.to") auf das Ausgabeformat zugreifen. Dadurch wird eine Zeichenfolge mit dem Zielausgabeformat zurückgegeben. Hier ein Beispiel:

--- 
title: "Untitled" 
output: html_document 
--- 

```{r} 
library(knitr) 
opts_knit$get("rmarkdown.pandoc.to") 
``` 

Das gibt "html" für html_document "docx" für word_document und "Latex" für PDF-Dokument.

+0

Funktioniert perfekt - Danke! –

Verwandte Themen