Trong R, các phép toán số học được trình bày với kí hiệu như sau:
Kí hiệu | Phép toán |
---|---|
+ | Phép cộng |
- | Phép trừ |
* * | Phép nhân |
/ | Phép chia |
^ hoặc ** | Mũ |
%/% | Phần nguyên |
%% | Phần dư |
#Phép cộng
1 + 2
## [1] 3
#Phép trừ
5 - 3
## [1] 2
#Phép nhân
2 * 4
## [1] 8
#Phép chia
8 / 3
## [1] 2.666667
#Phép mũ
2 ** 4
## [1] 16
#Phép mũ
2 ^ 4
## [1] 16
#Phần nguyên
9 %/% 5
## [1] 1
#Phần dư
9 %% 5
## [1] 4
Các từ và cụm từ trong R phải đặt trong dấu " "
"Hello MFE"
## [1] "Hello MFE"
Để gán giá trị cho tham số sử dụng dấu <- hoặc ->. Ví dụ:
# Gán giá trị 2 cho tham số x
x <- 2
x
## [1] 2
# Gán giá trị "Hello MFE" cho a
a <- "Hello MFE"
a
## [1] "Hello MFE"
Để kiểm tra định dạng của một đối tượng là integer, numeric hay character, sử dụng câu lệnh class
# Kiểm tra định dạng của số và chữ
class(4)
## [1] "numeric"
class(a)
## [1] "character"
class(1L)
## [1] "integer"
Ngoài ra có thể sử dụng thêm câu lệnh typeof để kiểm tra dạng cụ thể hơn
# Kiểm tra các dạng số
typeof(4)
## [1] "double"
typeof(1L)
## [1] "integer"
Để tạo chuỗi số nguyên liên tiếp từ a đến b (a:b)
# Tạo chuỗi số nguyên liên tiếp từ 5 đến 15
5:15
## [1] 5 6 7 8 9 10 11 12 13 14 15
Để tạo vecto số hoặc kí tự sử dụng c() và liệt kê các phần tử trong ngoặc
# Tạo vecto số x gồm các phần tử 2,5,7,8,3
x <- c(2,5,7,8,3)
x
## [1] 2 5 7 8 3
# Tạo vecto kí tự trong bao gồm các phần tử "tcb", "tkt", "ttc"
khoatkt <- c("tcb", "tkt", "ttc")
khoatkt
## [1] "tcb" "tkt" "ttc"
Để kiểm tra số phần tử của các vecto sử dụng cậu lệnh length
# Kiểm tra số phần tử của vecto x và khoatkt ở trên
length(x)
## [1] 5
length(khoatkt)
## [1] 3
Để kiểm tra số kí tự trong mỗi phần tử của vecto chữ sử dụng lệnh nchar
gt <- c("nam", "nu")
nchar(gt)
## [1] 3 2
Để đặt tên cho các phần tử của vecto, sử dụng câu lệnh names
# Tạo vecto dt gồm 3 phần tử 20, 30, 25
# Đặt tên tương ứng với diện tích phòng ngủ, phòng khách và phòng bếp
dt <- c(20, 30, 25)
names(dt) <- c("phòng ngủ", "phòng khách", "phòng bếp")
dt
## phòng ngủ phòng khách phòng bếp
## 20 30 25
Có thể đặt tên thông qua một vecto kí tự. Ví dụ:
# Tạo vecto chứ số người của ba bộ môn tcb, tkt và ttc
mem <- c(25, 30, 10)
# Gán vecto khoatkt làm tên các phần tử của vecto mem
names(mem) <- khoatkt
mem
## tcb tkt ttc
## 25 30 10
Đặt tên trực tiếp
# Đặt trên trực tiếp cho 3 phần tử của vecto vd
vd <- c("A" = 1, "B" = 3, "C" = 5)
vd
## A B C
## 1 3 5
Để chỉ định phần tử thứ i của vecto x, sử dụng kí hiệu x[i]
# Trích xuất giá trị thứ 2 của dt
dt[2]
## phòng khách
## 30
# Trích xuất giá trị 1 và 3 của dt
dt[c(1,3)]
## phòng ngủ phòng bếp
## 20 25
# Trích xuất giá trị từ 2 đến 4 của vecto x ở trên
x[2:4]
## [1] 5 7 8
Nếu vecto được đặt tên thì có thể trích xuất theo tên phần tử
# Trích xuất diện tích phòng khách
dt["phòng khách"]
## phòng khách
## 30
# Trích xuất diện tích phòng bếp và phòng ngủ
dt[c("phòng bếp","phòng ngủ")]
## phòng bếp phòng ngủ
## 25 20
Trong R có thể kiểm tra tính đúng sai của các phép so sánh bằng cách gõ trực tiếp biểu thức so sánh cần kiểm tra, để so sánh bằng sử dụng dấu “==”, đúng được gán TRUE (=1), sai được gán FALSE (=0)
# Kiểm tra so sánh bằng
2 + 3 == 6
## [1] FALSE
# Kiểm tra lớn hơn hoặc nhỏ hơn
3 < 4
## [1] TRUE
Có thể kiểm tra từng phần tử của vecto
# Tạo vecto v
v <- c(1,6,4,7,2,8,3,7,6)
# Kiểm tra các phần tử của v lớn hơn 3
v > 3
## [1] FALSE TRUE TRUE TRUE FALSE TRUE FALSE TRUE TRUE
# Tạo vecto kí tự kt
kt <- c("hôm", "nay", "trời", "đẹp", "quá")
# Kiểm tra các phần tử có số kí tự lớn hơn 3 và gán kết quả vào vecto check
check <- nchar(kt) > 3
check
## [1] FALSE FALSE TRUE FALSE FALSE
Để tính toán với các phần tử của vecto có thể gõ dấu như thông thường
# Tạo vecto x
x <- c(2,3,4)
# Tạo vecto y
y <- c(1,5,9)
# Tính tương ứng theo phần tử các phép toán số học
x**2
## [1] 4 9 16
x*3 - y
## [1] 5 4 3
x**4 %/% y
## [1] 16 16 28
Để tạo hàm số một thao tác sử dụng mẫu sau:
# Tạo hàm bp tính bình phương của x
bp <- function(x) x**2
# Tính bình phương của một số
bp(3)
## [1] 9
# Tính bình phương của nhiều số
bp(c(2,3,5,7,9))
## [1] 4 9 25 49 81
Ví dụ về hàm hai biến
# Tạo hàm số 2 biến x và y, đặt tên là bt
# Hàm bt(x,y) = 3x - y
bt <- function(x,y) 3*x - y
# Tính toán giá trị hàm số
bt(3,4)
## [1] 5
Để tạo hàm số nhiều thao tác, các thao tác thực hiện trong hàm phải đặt trong dấu {}
# Tạo hàm tính trung bình của x
ave <- function(x) {
n <- length(x)
sum(x) / n
}
# Tính ave của một chuỗi số
ave(c(1,2,4,6,7,9))
## [1] 4.833333
Câu lệnh IF được hoạt động theo cú pháp
if <biểu thức> <thực hiện nếu đúng> else <thực hiện nếu sai>
# Câu lệnh sau đây sẽ không tạo ra kết quả nào
if (2 > 3) "abc"
# Câu lệnh sau đây sẽ in kết quả phần sau
if (3 > 2) "abc"
## [1] "abc"
# Ví dụ về if-else
if (3 > 2) "thanh" else "trang"
## [1] "thanh"
Để kiểm tra nhiều phần tử của một vecto, không thực hiện câu lệnh if - else ở trên thay vào đó sử dụng hàm IFELSE
# Tạo vecto x
x <- c(1,5,2,3,7,6,9,2,4)
# Nếu phần tử lớn hơn 3 thì thay bằng 999 và gán vào vecto y
y <- ifelse(x > 3, 999, x)
y
## [1] 1 999 2 3 999 999 999 2 999
Ví dụ khác
# Tạo hàm căn bậc 2 của x
sq2 <- function(x) {
ifelse(x >= 0, x**(1/2), "không căn được")
}
sq2(c(3,9,-5))
## [1] "1.73205080756888" "3" "không căn được"
# Ví dụ tính tổng các phần tử sử dụng vòng lặp for
x <- c(2,6,4,8,7,5)
total <- 0
for (phantu in x) total <- total + phantu
total
## [1] 32
# Ví dụ về lặp theo chỉ số, seq_along() là hàm để gọi thứ tự phần tử
x <- c(2,6,4,8,7,5)
total <- 0
for (chiso in seq_along(x)) total <- total + x[chiso]
total
## [1] 32