Nghiên cứu khoa học khả lặp - reproducible research đang là xu thế mới của giới khoa học và những package sẽ giúp người nghiên cứu khoa học hoàn toàn có thể viết báo cáo của mình bằng các mã nguồn R, tận dụng các thể mạnh tính toán data visualization của R, viết biểu thức toán với Latex và có thể tự động hoá quá trình.

Đây là văn bản R Markdown. Khi bạn cần làm báo cáo với code mã nguồn kèm theo thì Rmarkdown và knirt sẽ là giải pháp vô cùng tuyệt vời trong R.

1. Rmarkdown làm việc như thế nào?

Đây là một file R Markdown với định dạng là .Rmd:

File này gồm 3 thành phần chính:

Để xuất báo cáo ra từ .Rmd file này ta dùng lệnh render:

library(rmarkdown)
#render("tên-của-file.Rmd")

R markdown sẽ xuất ra file mới có chứa text, code, và kết quả từ .Rmd file. File mới này có thể là web page, PDF,MS Word văn bản, slide show, notebook, handout, book, dashboard, package Vinette(html), hay là các định dạng khác.

Quá trình làm việc sẽ diễn ra như sau:

Khi bạn chạy lệnh render R Markdown sẽ cấp cho knirt file .Rmd. knirt sẽ thi hành tất cả các code chunks trong văn bản và tạo ra một file mới với định dạng .md bao gồm code mã nguồn và kết qur thực hiện code chunks.

File mardown này đươc được khởi tạo bằng knirt và sau đó được xử lý bằng pandoc để tạo ra file cuối cùng.

Quá trình này nghe có vẻ phức tạp nhưng R Markdown thực hiện nó vô cùng đơn giản bằng các đóng gói tất xả các quy trình trên bằng một hàm render.

2. Code chunks

ví dụ 1 R Markdown file dưới đây bao gồm 3 code chunks:

Để thêm một chunk mới bạn có thể click vào insert chunk hoặc dùng tổ hợp phím Ctrl+Alt+I hoặc tạo thủ công:

# ```{r} và ```

Để thi hành code chunk này thì bạn click run hoặc nhấn tổ hợp phím Ctrl+Shift+Enter.

Khi bạn lưu file notebook hay HTML có chứa code thì kết quả được lưu lại kèm theo nó là nút Preview hoặc tổ phím Ctrl+Shift+K giúp cho chúng ta có thể xem trước kết qủa của văn bản.

Code chunks có những tùy chọn cục bộ sau:

  • include = FALSE prevents code and results from appearing in the finished file. R Markdown still runs the code in the chunk, and the results can be used by other chunks.
  • echo = FALSE prevents code, but not the results from appearing in the finished file. This is a useful way to embed figures.
  • message = FALSE prevents messages that are generated by code from appearing in the finished file.
  • warning = FALSE prevents warnings that are generated by code from appearing in the finished.
  • fig.cap = “…” adds a caption to graphical results.

Có thể xem thêm các tùy chọn cho code chunks ở Markdown Reference Guide

Ví dụ với tùy chọn include:

Tùy chọn toàn cục cho Code chunks:

Để áp dụng tùy chọn cho tất cả các code chunks có trong văn bản của bạn hay còn gọi là thiết lập toàn cục, các bạn gọi knitr::opts_chunk$set.

Ví dụ:

#```{r setup, include=FALSE}
#knitr::opts_chunk$set(echo = TRUE)
#```

3. Line code trong R Markdown

Kết quả thực hiện code có thể chèn trực tiếp vào text của một file .Rmd bằng cú pháp sau

# ` r function`

Ví dụ dưới đây gọi colorFunc, và trả về kết quả là heat.colors.:

Điều này thực sự có ích khi chúng ta cần cập nhật báo cáo với một function khác:

R Markdown sẽ luôn luôn:

4. Code Languages

Knirt có thể thực thi code của rất nhiều ngôn ngữ khác chứ không chỉ riêng R như là:

Ví dụ thực thi code trong BashPython:

Để tìm hiểu thêm về cách sử dụng các ngôn ngữ khác với R Markdown ở đây

5. Sử dụng Parameters trong R Markdown

R Markdown document có thể bao gồm một số tham số (parameters) được thiết lập khi làn báo cáo. Ví dụ dưới đây sử dụng data parameter để xác định data set cho việc tạo biểu đồ:

Declaring Parameters:

Parameters được tuyên bố bằng cách sử dụng trường params trong YAML header của văn bản. Ví dụ văn bản ở trên tạo parameter data và gán mặc định cho nó là “hawaii”

Sử dụng parameters trong Code:

Các parameters đều sẵn sàng trong môi trường knit như là một danh sách chỉ để đọc với tên params. Để sử dụng parameter trong Code, cần gọi theo cú pháp sau:

# params$<parameter name>

Thiết lập parameters values:

Thêm params argument vào render để tạo báo cáo sử dụng tập hợp parameter values mới. Đưới đâylà sửa đổi báo cáo sự dụng aleutians data set:

#render("5-parameters.Rmd", params = list(data = "aleutians"))

Tốt hơn, nhấn vào tùy chọn “Knit with Parameters” để thiết lập các parameters, render, và xem trước báo cáo trong 1 bước:

Parameters thực sự hữu ích khi bạn muốn re-render một báo cáo tương tự với values đầu vào mới, ví dụ như:

  • Chạy một báo cáo cụ thể đến một bộ phận hay địa lý khu vực.
  • Chạy một bản báo cáo đó bao gồm một khoảng thời gian cụ thể trong thời gian.
  • Chạy nhiều phiên bản của một báo cáo riêng biệt vơi bộ lõi giả định.

Để tìm hiểu thêm về paramaterized reports tại đây

6. Các thiết lập cho bảng dữ liệu trong R Markdown

Với mặc định R Markdown hiển thị data frames và matrixes giống nhứ trong R terminal (in a monospaced font). Nếu bạn muốn dữ liệu của mình được hiển thị dưới dạng khác bạn có thể sử dụng hàm knirt::kable như ví dụ bên dưới:

Nêu bạn sử dụng chunk tùy chọn results = ‘asis’. Điều này cần thiết để đảm bảo rằng kết quả table output không chỉ được xử lý đơn thuần bởi knirt.

7. Markdown Basics

Đinh dạng văn bản text trong R Markdown file với Pandoc’s Markdown:

Bạn có thể sử dụng Pandoc’s Markdown để tạo:

Bạn có thể tìm hiểu thêm về Markdown ở Pandoc’s Markdown hoặc R Markdown Cheatsheet

8. Output Formats

9. Notebooks

10. Slide Presentations

11. Dashboards

12. Websites

13. Interactive Documents

14. Cheatsheets.