我正在将 RStudio 与 knitr
一起使用等,以制作可重复的报告,并希望为 Word 文档和 PDF 提供最佳版本 - 我更喜欢使用 LaTeX,但最终用户往往更喜欢可编辑 Word 文档的灵活性。
我写了一个 ifelse
声明基本上说'如果这是render
编辑成word文档,创建kable
Markdown 表,否则创建 kable
LaTeX 中的表格,然后进行操作以使表格看起来更好(阴影行等)'。
我不明白 rmarkdown::render
ing 过程用于捕获 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
}
}
然后,在运行此代码时:
rmarkdown::render(input = "test.Rmd", output_format = c("word_document", "pdf_document"))
不同版本的报告将包含正确的表格。
最佳答案
您可以通过 knitr::opts_knit$get("rmarkdown.pandoc.to")
访问输出格式.这将返回一个具有目标输出格式的字符串。下面是一个例子:
---
title: "Untitled"
output: html_document
---
```{r}
library(knitr)
opts_knit$get("rmarkdown.pandoc.to")
```
这将为 html_document 返回“html”,为 word_document 返回“docx”,为 pdf_document 返回“latex”。
关于r - 从 rmarkdown::render as variable 捕获 'output_format',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29881473/