2015-04-26 18 views
5

Tôi đang sử dụng RStudio với knitr, v.v ... để tạo báo cáo có thể tái sản xuất và muốn có phiên bản tốt nhất có thể cho cả tài liệu Word và PDF - Tôi thích làm việc với LaTeX hơn, nhưng người dùng cuối có xu hướng thích sự linh hoạt của các tài liệu Word có thể chỉnh sửa.Chụp 'output_format' từ rmarkdown :: hiển thị dưới dạng biến

Tôi đã viết một tuyên bố ifelse mà chủ yếu nói 'nếu đây là render ed như một tài liệu văn bản, tạo ra một bảng kable trong markdown, nếu không tạo ra các kable bảng trong LaTeX và sau đó thao tác để làm bàn trông đẹp hơn (hàng bóng mờ , vv) '.

Tôi không hiểu cách quy trình nhập rmarkdown::render hoạt động để nắm bắt output_format, nhưng có cách nào để lưu trữ biến này dưới dạng biến và sử dụng trong tuyên bố ifelse không?

Một ví dụ tối thiểu sẽ được lưu mã này như 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 

} 
} 

Sau đó, khi chạy đoạn mã này:

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

các phiên bản khác nhau của báo cáo sẽ có các bảng đúng bao gồm.

Trả lời

7

Bạn có thể truy cập định dạng đầu ra qua knitr::opts_knit$get("rmarkdown.pandoc.to"). Điều này sẽ trả về một chuỗi với định dạng đầu ra đích. Dưới đây là ví dụ:

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

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

Điều này trả về "html" cho html_document, "docx" cho word_document và "latex" cho pdf_document.

+0

Hoạt động hoàn hảo - Cảm ơn bạn! –

Các vấn đề liên quan