R-005 vector trong R
Nội dung bài viết
vector
là một những kiểu dữ liệu cơ bản của R.
Để hiểu rõ vector
của R các bạn có thể đọc tài liệu chi tiết về vector bằng lệnh:
?vector
1. Tạo một vector:
Để tạo một vector
như bài trước chúng ta đã thảo luận, có thể dùng hàm c()
với các phần tử của vector
:
s <- c("r", "hello", "stat", "software")
s
[1] "r" "hello" "stat" "software"
Nếu nhu cầu của chúng ta là tạo một vector
gồm các số liền kề, R cung cấp toán tử :
rất hữu ích.
num <- -3:8
num
[1] -3 -2 -1 0 1 2 3 4 5 6 7 8
Lưu ý a:b
trả về một vector
với phần tử đầu là a
các phần tử tiếp theo liền kề nhau một đơn vị trong đoạn [a:b]
:
num <- 5.4:9
num
[1] 5.4 6.4 7.4 8.4
Ngoài ra bạn có thể tạo một chuổi liên tiếp với “bước nhảy” tùy ý với hàm seq(...)
để hiểu rõ hơn hàm seq
các bạn có thể đọc thêm tài liệu R với ?seq
. Hai chức năng cơ bản mà mình muốn giới thiệu bao gồm:
- Tạo một
vector
tăng dần từfrom
đếnto
với bước nhảyby
:
seq(from=1, to=5, by=0.5)
# Viết gọn hơn
seq(1,5,0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
- Tạo một
vector
tăng dần từfrom
đếnto
với kích thướclength.out
:
seq(from=1, to=11, length.out=5)
# Viết gọn hơn
seq(1, 11, length.out=5)
[1] 1.0 3.5 6.0 8.5 11.0
2. Xem độ dài của một vector:
Để xem độ dài của một vector
chúng ta có thể sử dụng hàm length()
của R:
x <- c(0,1,2,3,9,8,7,4,5,6)
length(x)
[1] 10
3. Trích phần tử từ vector:
Để trích ra một phần tử của vector chúng ta có thể dùng toán tử []
, chúng ta có thể trích duy nhất một phần tử hoặc một vector phần tử theo thứ tự:
x <- c(0,1,2,3,9,8,7,4,5,6)
# Lấy ra phần tử thứ 4
x[4]
# Lấy phần từ 2 3 4 5
x[2:5]
# Lấy vector phần tử 1 3 5
x[c(1,3,5)]
[1] 3
[1] 1 2 3 9
[1] 0 2 9
4. Sửa phần tử trong vector:
vector
trong R chúng ta có thể gán lại giá trị phần tử trong vector
như sau:
x[5] <- 256
x
[1] 0 1 2 3 256 8 7 4 5 6
Hay thay bằng một vector
phần tử:
x[c(1,5,7)] <- c(-3,-2,-1)
x
[1] -3 1 2 3 -2 8 -1 4 5 6
5. Thêm, xóa phần tử trong vector:
vector
trong R không cho phép thêm và xóa một phần tử bất kì. Vì vậy để thêm hoặc xóa phần tử, chúng ta chỉ có cách duy nhất là tạo một vector
mới từ vector
ban đầu:
a <- c(1,2,3,4,5,6)
# Xoá phần tử thứ 3 bằng cách tạo vector mới từ 1:2 và 4:6
a <- c(a[1:2], a[4:6])
a
[1] 1 2 4 5 6
Tương tự với thêm phần tử.
6. Toán tử vector hóa:
vector
trong R cung cấp nhiều toán tử hữu ích giữa hai vector
, trong nhiều trường hợp để tăng hiệu năng tính toán thì chúng ta nên dùng những toán tử này, vì chúng được tối ưu bởi các thư viện đại số ở bên dưới khá kĩ. Không nên truy xuất từng phần tử trong vector
hay matrix
để tính toán:
Một số các ví dụ về toán tử được vector
hóa:
u <- c(1,2,3)
v <- c(2,3,1)
u > v
[1] FALSE FALSE TRUE
Thực hiện cộng với một scalar
:
u + 10
[1] 11 12 13
Làm tròn số:
g <- c(3.4, 4.5, 5.6, 10.1)
round(g)
[1] 3 4 6 10
Hoặc thậm chí cả tính căn bậc hai:
sqrt(g)
[1] 1.843909 2.121320 2.366432 3.178050