Jon*_*nny 6 r knitr r-markdown
我正在使用RStudio knitr等来制作可重复的报告,并希望我能为Word文档和PDF提供最好的版本 - 我更喜欢使用LaTeX,但最终用户倾向于更喜欢可编辑Word文档的灵活性.
我写了一个ifelse声明,基本上说"如果这是render作为word文档编辑,kable在markdown中创建一个表,否则kable在LaTeX中创建表,然后操作以使表看起来更好(阴影行等)'.
我不明白rmarkdown::rendering过程是如何捕获的output_format,但是有没有办法将它存储为变量并在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
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在运行此代码时:
rmarkdown::render(input = "test.Rmd", output_format = c("word_document", "pdf_document"))
Run Code Online (Sandbox Code Playgroud)
报告的不同版本将包含正确的表格.
您可以通过访问输出格式knitr::opts_knit$get("rmarkdown.pandoc.to").这将返回具有目标输出格式的字符串.这是一个例子:
---
title: "Untitled"
output: html_document
---
```{r}
library(knitr)
opts_knit$get("rmarkdown.pandoc.to")
```
Run Code Online (Sandbox Code Playgroud)
这将返回html_document的"html",word_document的"docx"和pdf_document的"latex".