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 đến to với bước nhảy by:
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 đến to với kích thước length.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