2015-04-26 29 views
5

Używam RStudio z knitr, itp., Aby tworzyć powtarzalne raporty i chcę mieć najlepsze wersje, które mogę dla dokumentów Word i PDF - wolę pracować z LaTeX, ale użytkownicy końcowi preferują elastyczność edytowalnych dokumentów programu Word.Przechwytywanie 'output_format' z rmarkdown :: render jako zmienna

Napisałem ifelse oświadczenie, że w istocie mówi, „jeżeli jest to render ed jako dokument programu Word, należy utworzyć kable tabelę w promocji cenowych, jeszcze utworzyć tabelę w LaTeX kable a następnie manipulować, aby tabeli wyglądają lepiej (zacienione wiersze itp.) ".

Nie rozumiem, w jaki sposób proces rmarkdown::render ing działa uchwycić output_format, ale czy jest jakiś sposób, aby zapisać to jako zmiennej i używać w rachunku ifelse?

Minimalny przykładem byłoby zapisać ten kod jako test.Rmd:

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 

} 
} 

Potem, kiedy uruchomiony ten kod:

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

różne wersje raportu miałaby poprawne tabele zawarte.

Odpowiedz

7

Dostęp do formatu wyjściowego można uzyskać za pośrednictwem knitr::opts_knit$get("rmarkdown.pandoc.to"). Spowoduje to zwrócenie ciągu znaków z docelowym formatem wyjściowym. Oto przykład:

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

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

ta zwraca "html" dla html_document "docx" dla word_document i "lateks" dla pdf_document.

+0

Działa idealnie - Dziękujemy! –