Vecto là một mảng động (Dynamic aarray) - tức là một danh sách có thể thay đổi thứ tự kích thước khi thêm hoặc xóa phần tử.
Tính chất của một vector
| Tính chất | Mô tả |
|---|---|
| Tự mở rộng | Khi thêm phần tử, vector tự tăng kích thước |
| Truy cập nhanh | Truy cập phần tử qua chỉ số (index) rất nhanh như mảng |
| Hỗ trợ thao tác tiện lợi | Có hàm push_back(), pop_back(),
insert(), erase()… |
| Có thể chứa bất kỳ kiểu dữ liệu | Như int, float, string, hoặc
cả kiểu do người dùng định nghĩa (class) |
C()Lưu ý: R bắt đầu đánh số từ 0.
# Vecto số
vec_num <- c(2,4,10,15,20,27)
print(vec_num)
## [1] 2 4 10 15 20 27
# Vecto chữ
vec_char <- c("hi", "i", "am", "Gốt", "Hi i am Gốt")
print(vec_char)
## [1] "hi" "i" "am" "Gốt" "Hi i am Gốt"
# Vecto logic
vec_logical <- c(TRUE,FALSE,FALSE,TRUE)
print(vec_logical)
## [1] TRUE FALSE FALSE TRUE
# Lấy ra phần tử thứ 1
vec_char[1]
## [1] "hi"
# Lấy ra phần tử thứ 3 đến 5
vec_num[c(3,5)]
## [1] 10 20
# Lấy tất cả phần tử
print(vec_char)
## [1] "hi" "i" "am" "Gốt" "Hi i am Gốt"
# Lấy tất cả trừ phần tử thứ 3
vec_logical[-3]
## [1] TRUE FALSE TRUE
Có thể thực hiện đầy đủ các phép toán học
a <- c(1,2,4,6,8)
b <- c(27,12,2,0,4)
# Cộng từng phần tử
a+b
## [1] 28 14 6 6 12
# Trừ từng phần tử
a-b
## [1] -26 -10 2 6 4
# Chia từng phần tử
a/b
## [1] 0.03703704 0.16666667 2.00000000 Inf 2.00000000
Hỗ trợ toán logic, lọc dữ liệu
c <- c(TRUE,FALSE,TRUE)
d <- c(TRUE, FALSE, FALSE)
# Phép AND
c & d
## [1] TRUE FALSE FALSE
Giải thích kết quả:
True & True -> True (giống nhau )
False & False -> False (giống nhau)
True & False -> False (khác nhay nên sai -> False)
c <- c(TRUE,FALSE,TRUE)
d <- c(TRUE, FALSE, FALSE)
# Phép OR
c|d
## [1] TRUE FALSE TRUE
Giải thích kết quả:
True & True -> True (giống nhau )
False & False -> False (giống nhau)
True & False -> True (cho kết quả TRUE nếu ít nhất một bên TRUE)
c <- c(TRUE,FALSE,TRUE)
# NOT
!c
## [1] FALSE TRUE FALSE
Giải thích kết quả: xuất ra kết quả không phải là c.
Không áp dụng phép toán số học, nhưng dùng được một số thao tác đặc trưng.
vec_char <- c("hi", "i", "am", "Gốt")
# Ghép lại thành chuỗi
paste(vec_char, collapse = " ")
## [1] "hi i am Gốt"
vec_char <- c("hi", "i", "am", "Gốt")
# In hoa
toupper(vec_char)
## [1] "HI" "I" "AM" "GỐT"
Không hỗ trợ phép toán số học, nhưng có thể so sánh.
e <- factor(c("cao", "thấp", "thấp", "cao", "trung bình"))
e == "cao"
## [1] TRUE FALSE FALSE TRUE FALSE
Giải thích kết quả: kết quả sẽ so sánh các phần tử trong
e với chữ “cao” nếu giống sẽ là TRUE, ngược lại là
FALSE.
tuoi <- c(1, 15, 30, 55, 80)
# Lấy các phần tử lớn hơn 18
tuoi[tuoi > 18]
## [1] 30 55 80
tuoi <- c(1, 15, 30, 55, 80)
# Vị trí thỏa điều kiện
which(tuoi > 18)
## [1] 3 4 5
so_nguyen <- c(-10, 0, 1, 9, 30, 49, 11)
so_nguyen[c(2,6)]
## [1] 0 49
print(sum(so_nguyen))
## [1] 90
print(mean(so_nguyen))
## [1] 12.85714
print(sd(so_nguyen))
## [1] 20.19429
so_nguyen[so_nguyen>mean(so_nguyen)]
## [1] 30 49