Tuyến Trần, MD
Lập trình & Phân tích

Quarto và R Markdown cho paper: khi reviewer yêu cầu tái lập phân tích

Quarto R Markdown cho paper giúp bác sĩ trả lời reviewer yêu cầu raw analysis bằng 1 file .qmd, render ngay thành PDF và Word.

Quarto R Markdown cho paper là thứ mình tìm ra vì bị reviewer bắt. Trong một bài báo của mình, reviewer hỏi nguyên văn: "Please provide the raw analysis code and confirm that all results can be reproduced from the original dataset." Mình gửi file Quarto .qmd, reviewer render được PDF và Word trong 5 phút, không hỏi thêm gì nữa.

Trước đó mình hay gửi script R rời, data CSV, và bảng kết quả riêng. Reviewer phải tự kéo từng thứ lại với nhau. Quarto giải quyết vấn đề đó bằng cách gộp code, kết quả và diễn giải vào một file.

Bài này dành cho bạn đã biết R cơ bản. Xem quy trình R cho bài báo lâm sàng nếu cần nắm toàn bộ quy trình trước.

Quarto và R Markdown khác nhau chỗ nào

R Markdown là định dạng cũ, đã chạy ổn định từ nhiều năm. Quarto là phiên bản mới hơn, tương thích với R Markdown nhưng hỗ trợ thêm Python và Julia trong cùng file, và cú pháp một số chỗ gọn hơn.

Nếu bạn chưa dùng cái nào: chọn Quarto. Nếu bạn đang dùng R Markdown ổn: không cần đổi vội. Hai định dạng có thể chạy song song.

Cấu trúc một file Quarto cho paper

---
# Đặt tên paper của bạn ở đây
tieu-de: "Phan tich du lieu ARM cohort"
author: "Tran T"
date: "2026-07-31"
format:
  html:
    toc: true
  pdf:
    toc: true
  docx:
    reference-doc: template_journal.docx
---

Một file .qmd gồm ba phần xen kẽ nhau:

  • YAML header: metadata và cài đặt xuất file
  • Đoạn văn bản: viết bằng Markdown thông thường
  • Code chunk: code R nằm trong dấu ```{r}
#| echo: true
#| message: false
#| warning: false

library(dplyr)
library(gtsummary)

df <- read.csv("data_arm.csv")

df %>%
  tbl_summary(by = nhom_phau_thuat) %>%
  add_p()

Khi render, code chạy thật, kết quả bảng và biểu đồ chèn thẳng vào tài liệu. Không copy-paste thủ công, không sai sót do điền tay.

Render ra Word và PDF trong 1 lệnh

# Trong terminal hoặc RStudio
quarto render phan_tich_arm.qmd --to docx
quarto render phan_tich_arm.qmd --to pdf
quarto render phan_tich_arm.qmd --to html

Hoặc render tất cả cùng lúc:

quarto render phan_tich_arm.qmd

File Word ra với bảng, biểu đồ và text đúng thứ tự. Mình thường gửi cả file .qmd lẫn file .docx cho reviewer: họ muốn xem kết quả thì mở Word, muốn tái lập thì mở Quarto.

Cài đặt chunk options quan trọng

#| echo: true       # hiện code trong tài liệu
#| eval: true       # chạy code
#| message: false   # ẩn thông báo gói
#| warning: false   # ẩn cảnh báo
#| cache: true      # lưu kết quả, không chạy lại mỗi lần render

cache: true rất quan trọng khi có đoạn code chạy lâu như meta-analysis với nhiều nghiên cứu. Kết quả được lưu cache, render lần sau nhanh hơn nhiều.

Khi cần nộp bài và muốn code ẩn trong tài liệu xuất ra (chỉ gửi kết quả), đặt:

execute:
  echo: false

trong YAML header thay vì đặt từng chunk.

Tổ chức file project

Mình tổ chức một paper project theo cấu trúc này:

paper_arm/
├── data/
│   └── data_arm.csv
├── scripts/
│   └── 01_clean.R
│   └── 02_analysis.R
├── paper_arm.qmd
└── template_journal.docx

File .qmd chính source() các script từ thư mục scripts/ thay vì nhét toàn bộ code vào một file. Dễ sửa hơn khi phân tích thay đổi sau reviewer round 1.

Khi nào dùng Quarto, khi nào script R bình thường

Dùng Quarto khi:

  • Paper cần gửi kèm phân tích tái lập được
  • Có nhiều bảng và biểu đồ cần chèn vào tài liệu
  • Cần cập nhật kết quả khi bổ sung bệnh nhân

Dùng script R bình thường khi:

  • Phân tích thăm dò, chỉ xem kết quả cho mình
  • Không cần xuất tài liệu, chỉ xuất CSV hoặc hình ảnh

Nếu bạn muốn thấy cách Quarto kết hợp với toàn bộ quy trình R từ làm sạch dữ liệu đến bảng và biểu đồ, đọc thêm lộ trình tự học R cho bác sĩ.

Khóa R cho nghiên cứu y khoa có module riêng về Quarto và R Markdown, hướng dẫn từ cài đặt đến xuất file journal-ready.