R-010 Cấu trúc điều khiển trong R
Nội dung bài viết
Thường thì làm thống kê với R, hầu như mọi thứ đều đã được hổ trợ sẳn, tuy nhiên bạn cũng cần trang bị một ít về kiến thức lập trình căn bản để có thể làm thống kê theo ý muốn của mình.
Một điều lưu ý các thao tác trên R nên tận dụng các phép toán trên ma trận và vector (đặc biệt sử dụng apply(...)
), tránh sử dụng vòng lặp. Vòng lặp trong R rất chậm so với rất nhiều ngôn ngữ khác (Python, Java,…) do đặc thù ngôn ngữ mà tác giả muốn hướng đến.
Trong RStudio
mình có thử dùng Enter
thì thấy trong Console
(hay R-Prompt
) không được nên để gõ xuống hàng bạn có thể dùng Shift
+ Enter
.
Trước khi vào phần này bạn cần ôn một số toán tử logic quan trọng trong R:
Toán tử | Ghi chú |
---|---|
< | nhỏ hơn |
<= | nhỏ hơn bằng |
> | lớn hơn |
>= | lớn hơn bằng |
== | so sánh bằng |
!= | khác |
!x | Not (phủ định x) |
A || B | Or (một trong A hoặc B là đúng thì mệnh đề đúng) |
A && B | And (cả A và B đúng thì mệnh đề đúng) |
1. Cấu trúc if-else
Cấu trúc if-else
viết đầy đủ có thể viết dưới dạng sau:
if (# Biểu thức logic TRUE FALSE) {
# Thực thi KHỐI LỆNH 1
} else {
# Thực thi KHỐI LỆNH 2
}
Hay ở nếu không cần mệnh đề else
:
if (# Biểu thức logic TRUE FALSE) {
# Thực thi KHỐI LỆNH 1
}
Hoặc có thể viết gọn hơn:
if (cond) expr1 else expr2
if (cond) expr
Một ví dụ đơn giản:
x <- 7
y <- 10
# Nếu (y != 10) nghĩa là (y khác 10)
if (y != 10) {
x <- -1
} else {
x <- 1000
}
x
[1] 1000
2. Vòng lặp for
Không nên lạm dụng for
trong R, vì vòng lặp for
trong R rất lâu.
Vòng lặp for
sẽ lặp length(seq)
lần với mỗi phần tử var
trong seq
. Cấu trúc vòng lặp for
trong R như sau:
for (var in seq) {
# Thực thi KHỐI LỆNH
}
Một ví dụ đơn giản:
# Tính tổng từ 2 đến 10
my.sum <- 0
for (i in 2:10) {
my.sum <- my.sum + i
}
my.sum
[1] 54
3. Vòng lặp while
Vòng lặp while
sẽ lặp đến khi điều kiện điều khiển vòng lặp FALSE
:
while (cond) {
# Thực thi KHỐI LỆNH
}
Một ví dụ đơn giản:
start <- 7
while (start < 100) {
start <- start + 6
}
start
[1] 103