从rmarkdown :: render捕获'output_format'作为变量

时间:2015-04-26 18:11:35

标签: r knitr r-markdown

我正在使用带有Random r = new Random(); Set<Integer> g = new LinkedHashSet<Integer>(); while (g.size() < numbersRequired) { Integer n = r.nextInt(max) + 1; // Here it will automatically do a containment check g.add(n); } 等的RStudio来制作可重现的报告,并希望我能为Word文档和PDF提供最好的版本 - 我更喜欢使用LaTeX,但最终用户倾向于喜欢可编辑Word文档的灵活性。

我写了knitr语句,基本上说'如果这是ifelse作为word文档,请在markdown中创建render表,否则创建kable在LaTeX中的表,然后操作以使表看起来更好(阴影行等)'。

我不明白kable进程如何捕获rmarkdown::render,但有没有办法将其存储为变量并在output_format语句中使用?< / p>

最小的例子是将此代码保存为ifelse

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

}
}

报告的不同版本将包含正确的表格。

1 个答案:

答案 0 :(得分:9)

您可以通过knitr::opts_knit$get("rmarkdown.pandoc.to")访问输出格式。这将返回具有目标输出格式的字符串。这是一个例子:

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

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

这会返回&#34; html&#34;对于html_document,&#34; docx&#34;对于word_document和&#34; latex&#34;对于pdf_document。