1 Tính toán cơ bản trong R

1.1 Các phép toán số học với chữ

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 **
%/% Phần nguyên
%% Phần dư
  • Ví dụ về các phép toán trong R:
#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

1.2 Các phép toán với chữ

Các từ và cụm từ trong R phải đặt trong dấu " "

"Hello MFE"
## [1] "Hello MFE"

1.3 Gán giá trị cho biến/tham số

Để 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"

1.4 Kiểm tra định dạng của đối tượng

Để 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"

2 Chuỗi số và Vector

2.1 Chuỗi số nguyên liên tiếp (sử dụng làm chỉ số)

Để 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

2.2 Tạo vecto số hoặc kí tự

Để 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"

2.3 Kiểm tra số phần tử của vecto và số kí tự của các phần tử

Để 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

2.4 Đặt tên cho các phần tử của vecto

Để đặ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

2.5 Trích xuất giá trị phần tử theo chỉ số

Để 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

2.6 Phép toán logic

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

2.7 Tính toán với các phần tử của vecto

Để 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

3 Tạo hàm số trong R

3.1 Tạo hàm số một thao tác

Để 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

3.2 Tạo hàm số nhiều thao tác

Để 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

4 Gán giá trị kiểm tra đúng sai bằng câu lệnh IF và IFELSE

4.1 Sử dụng câu lệnh điều kiện IF

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"

4.2 Kiểm tra các phần tử sử dụng IFELSE

Để 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"

5 Vòng lặp cơ bản

5.1 Lặp cơ bản với FOR

# 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