2015-02-13 21 views
18

Với một tệp đánh dấu R, tôi muốn tạo các tài liệu pdf đầu ra có thể khác nhau, trong đó tên tệp đầu ra phải được xác định trong tài liệu. Có cách nào để thuyết phục markdown để thao tác các tên tập tin đầu ra theo cách như vậy? Lý tưởng nhất là tôi muốn chuyển tên tệp bằng một đoạn r.R Markdown - tên đầu ra biến

+0

bạn có thể đăng lệnh của mình không? Bạn có muốn đặt tên tệp là "động" không? 'paste0 (" file _ ", x,". pdf ")?' x có thể là ngày hoặc tên của tập dữ liệu – rmuc8

+0

Cho đến nay tôi đã sử dụng RStudio, thực hiện lệnh đan mà không thực sự xem xét thêm chi tiết. Nhưng tôi nên có một cái nhìn gần hơn vào câu trả lời của ilyas, nghe giống như một cách tiếp cận rõ ràng hơn nhiều. – Sosel

Trả lời

23

Bạn có thể giữ sự đơn giản của việc sử dụng các Knit nút RStudio và độ tái lập của một tiêu đề YAML bằng công không có giấy tờ knit móc để xác định lại chức năng của nút không (chức năng mặc định được gọi là rmarkdown::render). Tham số output_file của hàm render chỉ định tên tệp, do đó, bằng cách đặt nó, bạn ghi đè hành vi chuẩn của việc sử dụng cùng một tiền tố làm tên tệp đầu vào.

ví dụ: luôn ra một tập tin gọi là myfile.pdf

knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding, output_file = file.path(dirname(inputFile), 'myfile.pdf')) }) 

Chức năng có thể là một ẩn danh one-liner cũng như nhập khẩu từ một gói, như đã thấy here với slidify.

Bạn có thể đặt tiêu đề YAML của riêng mình (tôi không biết điều này thường được thông báo hay không), có thể truy cập dưới rmarkdown::metadata$newheader nhưng chúng dường như không có sẵn trong phạm vi chức năng này như tôi thấy.

Để chuyển tên tệp từ một đoạn R ... nếu bạn đang đề cập đến các khối mã bên dưới tiêu đề YAML, từ kinh nghiệm của tôi, tôi không nghĩ rằng có thể (?). Tiêu đề có thể chứa các lệnh R nội tuyến (một dấu backtick đơn, bắt đầu bằng r), nhưng dường như không phải cho hàm móc này.

liên quan:

+0

Lỗi khi rmarkdown :: metadata $ title <- "My Title": 'rmarkdown' đối tượng không tìm thấy – jzadra

+0

@yihuixie, tôi có thể chuyển thông số không $ bất cứ điều gì vào tên tập tin đầu ra theo cách đó? Đánh dấu của tôi sử dụng dữ liệu params $ để lấy tệp dữ liệu có liên quan, nhưng nó không giống như thế này hoạt động trong một lớp lót của bạn - 'params $ data not found'. Tôi có thể vượt qua bất cứ điều gì tôi muốn từ một kịch bản với 'rmarkdown :: render (params = list (dữ liệu =" Oct2017data "), output_file =" Oct2017_analysis.html ")', nhưng rõ ràng là tôi muốn chỉ có thể gõ nó một lần. – StasK

14

này là khá nhiều những gì tôi làm:

rmarkdown::render('my_markdown_report.Rmd', 
        output_file = paste('report.', Sys.Date(), 
             '.pdf', sep='')) 

tôi có ba kịch bản - một kéo dữ liệu và xử lý nó, thứ hai tạo ra bảng xếp hạng & bảng cho báo cáo. Thứ ba tạo báo cáo dựa trên tệp đánh dấu. Mã bạn nhìn thấy ở trên là một phần của kịch bản thứ ba

+0

Cho đến nay tôi chỉ sử dụng lệnh RStudios knit để biên dịch một số tệp tin markdown.Nếu tôi hiểu bạn một cách chính xác, bạn tạo ra các tập tin đánh dấu thực tế bằng cách sử dụng lệnh R, và thậm chí chỉ đạo đan của markdown bằng cách sử dụng lệnh R? Tôi đã không nhận thức được cách tiếp cận này cho đến nay, nhưng tôi sẽ có một cái nhìn gần hơn. Cho đến nay tôi cũng đang chuẩn bị dữ liệu và xử lý dữ liệu trong tập lệnh đầu tiên, nhưng đã ở bước thứ hai, tôi đã tạo thủ công tệp đánh dấu, ví dụ: các nguồn dữ liệu khác nhau vào một số báo cáo. – Sosel

+0

Có. tập tin markdown là tập lệnh riêng biệt, nó đọc dữ liệu đặt biểu đồ và bảng với nhau. Nó được gọi là tuy nhiên từ kịch bản bên ngoài - bạn cũng có thể bắt đầu/thực hiện nó từ Rstudio và và sẽ tạo ra tập tin có cùng tên. Tuy nhiên, tôi gọi nó từ tập lệnh riêng biệt và sau khi rmarkdown tạo tệp kết quả pdf được sao chép vào các địa điểm khác nhau – ilya

2

Theo dõi vào những gì @ilya viết, trang web này có một ví dụ tuyệt vời thể hiện những gì họ mô tả, đó là cách tạo nhiều báo cáo có thể tái sản xuất từ ​​cùng một tài liệu .Rmd :

http://www.reed.edu/data-at-reed/software/R/markdown_multiple_reports.html

Trang web sử dụng hai kịch bản, một kịch bản R và một kịch bản Rmarkdown để tạo ra nhiều báo cáo. Tôi đã sử dụng nó như là một mẫu cho công việc của riêng tôi và thấy nó rất hữu ích.

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