Ngôn ngữ lập trình R/Kiểu dữ liệu

Từ Thư viện Khoa học VLOS
Bước tới: chuyển hướng, tìm kiếm
Chia sẻ lên facebook Chia sẻ lên twitter Chia sẻ lên google-plus In trang này

Các kiểu dữ liệu đơn giản thường gặp

Trên đây chúng ta đã gặp hai kiểu dữ liệu: dữ liệu số và dữ liệu xâu ký tự. Để phân biệt rõ hơn, ta làm "thí nghiệm" sau:

> x = '1'
 
> y = 1
 
> mode(x)
 
[1] "character"
 
> mode(y) 
 
[1] "numeric"

Hàm mode cho biết dạng dữ liệu được ghi trong biến. Ta thấy x chứa '1' là một ký tự, trong khi y chứa 1 là một số.

Ta thử liều

> sqrt(x)
Error in sqrt(x) : Non-numeric argument to mathematical function


Sở dĩ cần phải phân biệt các kiểu dữ liệu vì mỗi kiểu dữ liệu khác nhau đi kèm với cách xử lý chúng, các hàm khác nhau. Ta có thể cắt, dán, in các dữ liệu ký tự, nhưng không thể khai căn của ký tự 'a' cũng như ký tự '1'. Các hàm cho xâu ký tự được liệt kê ở (đây), bạn có thể tìm kiếm khi cần thiết.

Với ký tự '1', ta có một số tương ứng với ký tự đó (1), ta có thể chuyển đổi một ký tự như vậy thành một số:

> x1 = as.numeric(x)
 
> mode(x1)
 
[1] "numeric"

Nếu bạn lại thử chuyển 'a' thành một số:

> as.numeric('a')
[1] NA
Warning message:
NAs introduced by coercion

Giá trị được biểu diễn bởi NA: không có giá trị số thực tương ứng với 'a'. NA là một ký tự đặc biệt, có thể hiểu như biểu diễn từ "khuyết". Trong một dãy giá trị đo, một trị số không đo được chẳng hạn do máy đo hỏng sẽ là giá trị khuyết, NA.

Kiểu số và kiểu ký tự là kiểu dữ liệu phổ biến hơn cả. Tuy nhiên đôi khi chúng ta gặp kiểu dữ liệu logic. Kiểu dữ liệu logic nảy sinh khi ta so sánh hai trị số. Để tránh trừu tượng, ta lại thí nghiệm:

> a = 1
> b = 2
> d = a > b
> d
[1] FALSE
> mode(d)
[1] "logical"

Trong thực tế việc so sánh rõ ràng là quen thuộc, nhưng đôi khi bạn không để ý rằng so sánh là một toán tử (theo định nghĩa ở trên.) Ta vừa gặp toán tử ">" trên đây, toán tử này nhận vào hai giá trị ghi trong biến a và b từ hai phía, và cho câu trả lời TRUE (Đúng) hoặc FALSE (Sai). Hiển nhiên 1 không thể lớn hơn 2 nên giá trị của d là FALSE. Tương tự như vậy ta có các toán tử logic khác "<", "<=", ">=", và cuối cùng toán tử "==" mà chúng tôi đã cố gắng nhấn mạnh sự khác biệt với lệnh gán.

> a < b
[1] TRUE
> a == b
[1] FALSE

Các dạng logic rất quan trọng trong các "rẽ nhánh" của chương trình.

<< Mục lục

Liên kết đến đây

Chia sẻ lên facebook Chia sẻ lên twitter Chia sẻ lên google-plus In trang này