我正在使用带有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
}
}
报告的不同版本将包含正确的表格。
答案 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。