Cheat sheet R
Cập nhật lần cuối
Hello World & assignment
Toán tử gán quen thuộc của R là <- (toán tử = cũng dùng được).
| Thao tác | Cú pháp |
|---|---|
| In một giá trị | print("Hello, World!") |
| Tự in ra (console) | "Hello, World!" |
| Nối và in ra | cat("Hi", name, "\n") |
| Gán (cách quen dùng) | x <- 5 |
| Gán (cũng hợp lệ) | x = 5 |
| Gán sang phải | 5 -> x |
| Chú thích | # this is a comment |
| Chạy một script | Rscript app.R |
Kiểu dữ liệu và vector
Vector là cấu trúc dữ liệu nền tảng của R; ngay cả một giá trị đơn cũng là vector có độ dài 1.
| Thao tác | Cú pháp |
|---|---|
| Vector số | v <- c(1, 2, 3) |
| Vector ký tự | s <- c("a", "b") |
| Vector logic | b <- c(TRUE, FALSE) |
| Dãy số nguyên | 1:10 |
| Dãy có bước nhảy | seq(0, 1, by = 0.1) |
| Lặp lại giá trị | rep(0, times = 5) |
| Các kiểu cơ bản | numeric, character, logical, integer, complex |
| Kiểm tra / ép kiểu | class(x), as.numeric("42") |
Phép toán trên vector
Phép toán được vector hóa và áp dụng cho từng phần tử; chỉ số bắt đầu từ 1.
| Thao tác | Cú pháp |
|---|---|
| Truy cập phần tử (bắt đầu từ 1) | v[1] |
| Cắt một đoạn | v[2:4] |
| Lọc theo điều kiện logic | v[v > 2] |
| Bỏ một phần tử | v[-1] |
| Tính toán theo từng phần tử | v * 2, v1 + v2 |
| Độ dài | length(v) |
| Các hàm thu gọn thông dụng | sum(v), mean(v), max(v) |
| Sắp xếp / đảo ngược | sort(v), rev(v) |
| Vector có tên | c(a = 1, b = 2) |
Data frame
Data frame là một bảng gồm các cột, mỗi cột là một vector có cùng độ dài.
| Thao tác | Cú pháp |
|---|---|
| Tạo data frame | df <- data.frame(name = c("Ada"), age = c(30)) |
| Những hàng đầu / cuối | head(df), tail(df) |
| Kích thước | nrow(df), ncol(df), dim(df) |
| Tên cột | names(df), colnames(df) |
| Chọn một cột | df$age hoặc df[["age"]] |
| Chọn hàng / cột | df[1, ], df[, "age"] |
| Lọc hàng | df[df$age > 18, ] |
| Thêm cột | df$adult <- df$age >= 18 |
| Thống kê tóm tắt | summary(df) |
| Tổng quan cấu trúc | str(df) |
Factor và list
Factor lưu dữ liệu phân loại; list chứa các phần tử thuộc nhiều kiểu khác nhau.
| Thao tác | Cú pháp |
|---|---|
| Tạo factor | f <- factor(c("low", "high")) |
| Các mức của factor | levels(f) |
| Factor có thứ tự | factor(x, ordered = TRUE) |
| Đếm theo mức | table(f) |
| Tạo list | l <- list(name = "Ada", scores = c(1, 2)) |
| Truy cập theo tên | l$name hoặc l[["name"]] |
| Truy cập theo vị trí | l[[1]] |
| List con (vẫn là list) | l[1] |
| Độ dài / tên | length(l), names(l) |
Luồng điều khiển
Điều kiện đặt trong ngoặc đơn, khối lệnh đặt trong ngoặc nhọn.
| Thao tác | Cú pháp |
|---|---|
| If / else if / else | if (x > 0) { ... } else if (x < 0) { ... } else { ... } |
| if-else vector hóa | ifelse(v > 0, "pos", "neg") |
| For loop | for (i in 1:10) { ... } |
| Vòng lặp for qua vector | for (x in v) { ... } |
| While loop | while (x < 100) { ... } |
| Lặp với break | repeat { if (done) break } |
| Switch | switch(key, a = 1, b = 2) |
| Toán tử logic | &&, ||, ! (giá trị đơn); &, | (vector) |
Hàm
Hàm là đối tượng hạng nhất; biểu thức được tính cuối cùng sẽ được trả về.
| Thao tác | Cú pháp |
|---|---|
| Định nghĩa hàm | add <- function(a, b) { a + b } |
| Trả về tường minh | return(a + b) |
| Đối số mặc định | greet <- function(name = "World") { ... } |
| Đối số variadic | f <- function(...) { sum(...) } |
| Gọi theo tên đối số | box(w = 2, h = 3) |
| Hàm ẩn danh | function(x) x * 2 |
| Hàm ẩn danh (viết tắt) | \(x) x * 2 |
| Truyền vào hàm bậc cao | sapply(1:3, function(x) x^2) |
Họ apply
Áp dụng một hàm lên dữ liệu mà không cần viết vòng lặp tường minh.
| Hàm | Chức năng |
|---|---|
apply(m, 1, sum) | Áp dụng theo hàng (1) hoặc cột (2) của ma trận |
sapply(v, f) | Áp dụng lên vector, rút gọn thành vector/ma trận |
lapply(v, f) | Áp dụng lên vector, luôn trả về list |
vapply(v, f, numeric(1)) | Giống sapply nhưng kiểm tra kiểu trả về |
mapply(f, a, b) | Áp dụng song song lên nhiều vector |
tapply(x, group, mean) | Áp dụng một hàm theo từng nhóm |
Map(f, a, b) | Apply nhiều biến, trả về list |
Reduce(+, v) | Gộp một vector bằng một hàm hai ngôi |
Các hàm xử lý dữ liệu và thống kê thông dụng
Những hàm base hay dùng để tóm tắt và định hình lại dữ liệu.
| Hàm | Chức năng |
|---|---|
mean(v) / median(v) | Trung bình / trung vị |
sd(v) / var(v) | Độ lệch chuẩn / phương sai |
min(v) / max(v) / range(v) | Nhỏ nhất / lớn nhất / cả hai |
quantile(v) | Phân vị (ví dụ tứ phân vị) |
table(x) | Tần suất của các giá trị |
unique(v) / duplicated(v) | Giá trị khác nhau / đánh dấu trùng lặp |
is.na(v) / na.omit(df) | Tìm / bỏ giá trị thiếu |
aggregate(y ~ g, df, mean) | Tóm tắt y theo nhóm g |
order(v) | Thứ tự chỉ số để sắp xếp |
cor(x, y) | Tương quan giữa hai vector |
Những cú pháp R bạn dùng nhiều nhất, gói gọn trong một trang. Cheat sheet R này là bảng tra cứu nhanh cho phần cốt lõi của ngôn ngữ: phép gán và kiểu dữ liệu, vector và phép toán trên vector, data frame, factor và list, luồng điều khiển, hàm, và họ apply được dùng khắp nơi trong phân tích dữ liệu với rstats.
Mọi thứ ở đây là R gốc (base R), chạy trên bản cài đặt mặc định, không cần package nào thêm. Sao chép phần bạn cần, hoặc chạy thử từng đoạn code trong R playground, không cần thiết lập gì.
Câu hỏi thường gặp về cheat sheet R
Cheat sheet R này có miễn phí không?
Có. Cheat sheet R này hoàn toàn miễn phí, không cần đăng ký. Hãy lưu dấu trang và quay lại bất cứ khi nào bạn cần tra một phép toán vector, phương thức data frame hay hàm thống kê.
Vector trong R có thật sự bắt đầu chỉ số từ 1 không?
v[1] trả về phần tử đầu tiên và v[length(v)] trả về phần tử cuối. Chỉ số âm có ý nghĩa đặc biệt: v[-1] bỏ phần tử đầu tiên chứ không đếm từ cuối. Quy ước bắt đầu từ 1 này áp dụng cho cả vector, list lẫn data frame.Data frame trong R là gì?
df[rows, columns], chọn một cột bằng df$name, và xem cấu trúc bằng str(df) hoặc summary(df).Có thể luyện tập R online không?
Có. Mở R playground để chạy bất kỳ đoạn code nào trong cheat sheet này ngay trên trình duyệt, không cần cài R hay RStudio. Khi muốn học có lộ trình, khóa học R tương tác miễn phí của Coddy đưa bạn từng bước từ vector và data frame đến họ apply và thống kê.
Cheat sheet này có phù hợp cho người mới bắt đầu không?
Có. Trang được sắp xếp từ các chủ đề phổ biến nhất (phép gán, vector, data frame) đến các chủ đề nâng cao (họ apply và các hàm thống kê), nên bạn dùng được các phần đầu ngay từ ngày đầu tiên và dần làm quen với phần còn lại.