Lập trình với R: Vectors

Vector

Vector

Hôm nay, chúng ta sẽ tìm hiểu về vector, một trong những kiểu dữ liệu đơn giản và thông dụng nhất trong R. Vectors có hai định dạng: atomic vectors (vector đơn cấu trúc) và list (vector đa cấu trúc). Atomic vector chỉ chứa duy nhất một kiểu dữ liệu. Trong khi đó, list có thể chứa nhiều kiểu dữ liệu khác nhau. Chúng ta sẽ tìm hiểu về atomic vector trước rồi sau đó đến list.

Trong bài viết trước, chúng ta hầu như chỉ làm việc với numeric vectors chứa các phần tử mang kiểu dữ liệu numeric (kiểu số thực). Ngoài kiểu dữ liệu này ra, ta còn có thể dùng kiểu dữ liệu logical, character, integer, và complex. Trong bài viết này, ta sẽ tìm hiểu về logical và character vectors.

Logical vector có thể chứa các giá trị TRUE, FALSE, và NA (not available). Các giá trị này được sinh ra từ kết quả của các điều kiện logic. Chúng ta hãy xem qua ví dụ sau:

# tạo numeric vector gồm các giá trị sau
num_vect <- c(0.5, 55, -10, 6)

# xét điều kiện logic sau
num_vect < 1
[1] TRUE FALSE TRUE FALSE

Qua ví dụ trên, ta có thể thấy điều kiện logic trên num_vect < 1 sinh ra một vector có 4 giá trị logical. Câu điều kiện logic này lấy từng phần tử trong num_vect đem so sánh với 1 và trả ra kết quả logical tương ứng cho từng phần tử này. Phần tử đầu tiên có giá trị là 0.5, tất nhiên là nhỏ hơn 1 và do đó kết quả trả về là TRUE. Kế đến là 55 có giá trị không nhỏ hơn 1, do đó kết quả trả về là FALSE. Tương tự như vậy cho các phần tử còn lại ta sẽ có 4 giá trị logical tương ứng với 4 phần tử của num_vect.

Ngoài kiểu so sánh với toán tử logical < trên ta còn có thể áp dụng các toán tử logical khác như >=, >, <=, ==, !=, … Kế đến, giả sử chúng ta có hai toán hạng logic A và B, chúng ta muốn biết hội của hai toán hạng này là TRUE hay FALSE. Ta dùng toán tử “|” (hay còn gọi là toán tử hội ‘union’).

Character vector cũng hay được dùng trong R. Dấu nháy kép dùng để ngăn cách các đối tượng character như ví dụ sau:

my_char <- c("My", "name", "is")
[1] "My" "name" "is"

Hiện tại, my_char là một character vector có độ dài là 3. Giả sử chúng ta muốn nối các phần tử trong my_char lại với nhau để tạo thành một chuỗi character duy nhất. Chúng ta có thể sử dụng hàm paste() như sau:

# nối các phần tử lại với nhau và được ngăn cách bởi khoảng trắng
paste(my_char, collapse = " ")
[1] "My name is"

# in tên của bạn ra màn hình
my_name my_name
[1] "My" "name" "is" "Swirl"

paste(my_name, collapse = " ")
[1] "My name is Swirl"

# ví dụ phức tạp hơn về kết hai vector với hàm paste
paste(1:3, c("X", "Y", "Z"), sep = "")
[1] "1X" "2Y" "3Z"

# do vector LETTERS có nhiều phần tử hơn numeric vector 1:4, R sẽ lặp xoay vòng để kết hai vector này lại
paste(LETTERS, 1:4, sep = "-")
[1] "A-1" "B-2" "C-3" "D-4" "E-1" "F-2" "G-3" "H-4" "I-1" "J-2" "K-3" "L-4"
[13] "M-1" "N-2" "O-3" "P-4" "Q-1" "R-2" "S-3" "T-4" "U-1" "V-2" "W-3" "X-4"
[25] "Y-1" "Z-2"

Qua các ví dụ trên, ta đã làm quen và thao tác được trên vector, kiểu dữ liệu thường được sử dụng trong R.

Nguồn tham khảo: http://swirlstats.com/

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s