Rmarkdown là một framework giúp các data science có thể public các kết quả của mình dưới dạng một báo cáo. Rmarkdown hỗ trợ việc:
Rmarkdown có khả năng tái tạo và bổ sung báo cáo. Nó hỗ trợ hàng chục các format output khác nhau như pdf, powerpoint, html,…. Cụ thể hơn về các format này bạn xem video giới thiệu:
https://player.vimeo.com/video/178485416
Để cài đặt Rmarkdown dùng lệnh install.packages(“rmarkdown”).
Một Rmarkdown sẽ gồm 2 phần cơ bản:
---
title: "RmarkDownFormat"
author: "Pham Dinh Khanh"
date: "April 18, 2018"
output: html_document
---
'''{r}
'''
bên trong {r} là các setup của chunkcode đó.
Khi load các package trên Rmarkdown ta thường gặp các message về các package liên quan được load hoặc warning package này được build ở RStudio version mới hơn. Những thông tin này là không cần thiết. Vì vậy cần ẩn các phần này đi. Chẳng hạn như:
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
'''{r setup, include=FALSE}
opts_chunk$set(warning = FALSE, message = FALSE)
'''
library(dplyr)
Lệnh này chỉ cần dùng 1 lần ở R chunk code đầu tiên sẽ khiến toàn bộ các wanring và message của file RmarkDown bị suppress cho các R chunk code kế tiếp.
Qui định về output của một file Rmarkdown nằm ở phần header mục output. Để tùy chỉnh output ta cần thêm các thông số cho output đó. Các thông số này có dạng phân cấp từ trên xuống dưới theo quan hệ parent:children và được các nhau bởi dấu “:”
output:
html_document:
code_folding: show
Dạng phổ biến của chúng là là html_document nên tôi sẽ trình bày về các tùy chọn của nó:
---
title: "RmarkdownFormat"
output:
html_document:
mathjax: "http://example.com/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
---
Chẳng hạn sau khi thêm MathJax tôi gõ được công thức latex như sau:
\[ P(Y_{i}|X_{i};\theta) = p_{i}^{Y_{i}}(1-p_{i})^{1-Y_{i}}\]
Trong một số trường hợp muốn overwrite lên header của Rmarkdown ta có thể setup trong includes như bên dưới:
---
title: "RmarkdownFormat"
output:
html_document:
includes:
in_header: header.html
before_body: doc_prefix.html
after_body: doc_suffix.html
---
Khi đó các file header.html, doc_prefix.html và doc_suffix.html phải được đặt trong cùng một thư mục.
Hoặc chúng ta có thể sử dụng một cách khác để định dạng 1 lần cho toàn bộ các file Rmarkdown trong thư mục của chúng ta thông qua file _output.yaml được tạo ra trong cùng 1 thư mục:
---
html_document:
self_contained: false
theme: united
highlight: textmate
---
Tất cả các file trong cùng 1 thư mục sẽ kế thừa các định dạng từ file này và override các định dạng đã thiết lập trước đó.
Chẳng hạn như:
---
title: "Habits"
output:
html_document:
fig_width: 7
fig_height: 6
fig_caption: true
---
---
title: "Iris"
output:
html_document:
df_print: paged
---
iris
Có thể điều chỉnh số dòng và cột hiển thị khi truyền thêm vào chunkcode các lựa chọn cols.print=5, rows.print=5:
'''{r cols.print=5, rows.print=5}
mtcars
'''
Ngoài ra còn có các options khác cho hiển hị bảng như:
- “default”: Hiển thị bảng dưới dạng print.data.frame
- “kable”: Hiển thị bảng dưới dạng knitr::kable
- “tibble”: Hiển thị bảng dưới dạng tibble::print.tbl_df
Sử dụng kí hiệu số như bên dưới để tạo list theo thứ tự
1. Item1
2. Item2
3. Item3
* Item1
* Item2
* Item3
1. Item1
- SubItem level1
- SubItem level2
[link phrase optional](http://google.com)
Trong đó link phrase là tên đường link và giá trị trong dấu () là đường link thật sự.
Ví dụ cần trích dẫn một link với tên là rmarkdown
[rmarkdown](http://rmarkdown.rstudio.com)


Là hình ảnh trên website hoặc hình ảnh trong cùng một local folder với file rmarkdown. Ta có thể thấy link image chỉ khác link web ở chỗ nó có dấu ! ở đầu tiên. Caption cho hình ảnh là tùy chọn.
Ví dụ: Bạn cần lấy 1 hình ảnh nào đó:

anh cua khanh
**My name is Khanh**
My name is Khanh
*My name is Khanh*
My name is Khanh
Nếu muốn nổi bật một vài dòng ta có thể thêm dấu > text.
Tên tôi là Phạm Đình Khánh
> Best regards!
> Phạm Đình Khánh ,QTRRTT - Techcombank.
Tên tôi là Phạm Đình Khánh > Best regards! > Phạm Đình Khánh ,QTRRTT - Techcombank.
Nếu muốn quote lại một phần text code trong Rmarkdown ta để chúng trong dấu ‘’’. Khi đó đoạn text code sẽ được đóng khung và format đẹp hơn.
'''
library(dplyr)
mtcars %>% group_by(carb) %>%
summarise_all(sum)
'''
Tuy nhiên nội dung code sẽ không được thực thi.