R-004 Làm quen với R
Nội dung bài viết
1. In thông tin ra màn hình R:
Để có thể in ra giá trị của một biến hoặc biểu thức, có 3 cách:
- Chỉ việc
Enter
sau khi gõ tên biến và biểu thức, mà hìnhR-prompt
sẽ xuất ra màn hình giá trị tương ứng:
x <- "Toi yeu ThetaLog.com"
x
sqrt(4)
[1] "Toi yeu ThetaLog.com"
[1] 2
- Khi bạn gõ một biểu thức như trên, R sẽ tính giá trị biểu thức trả về sau đó lập tức gọi hàm
print
. Hay cách khác nó tương đương với:
x <- "Toi yeu ThetaLog.com"
print(x)
print(sqrt(4))
Ưu điểm của hàm print
là nó cho phép bạn in thông tin theo định dạng mình mong muốn, hơn nữa bạn có thể lồng vào hàm khác khi cần thiết.
Điểm yếu duy nhất của print
là nó không cho phép in ra màn hình nhiều giá trị. Điều này có thể khắc phục với hàm cat
.
cat
giúp bạn in ra màn hình nhiều giá trị liên tiếp. Ví dụ:
cat("Gia tri cua 4+3 la:", 4+3)
Gia tri cua 4+3 la: 7
2. Lưu giá trị vào một biến:
Để lưu một giá trị cần thiết vào một biến trong R chúng ta sử dụng toán tử gán <-
, mặc định nếu không nói gì thêm R sẽ tự động suy ra kiểu của giá trị mà nó được gán.
Vì R là một ngôn ngữ dynamically typed language
nên nó không bắt buộc biến của bạn phải luôn ở một kiểu nhất định, chúng ta có thể đặt biến x
là một số thực nào đấy, sau đó chuyển x
thành dạng chuổi, R sẽ không báo bất kì lỗi nào. (trong các ngôn ngữ static typed language
thì đây là điều cấm không cho phép)
3. Xuất ra màn hình các biến, hàm đang được định nghĩa trong phiên làm việc:
R cung cấp hàm ls()
hàm này sẽ liệt kê ra tất cả các biến và hàm mà chúng ta định nghĩa. Hoặc bạn có thể xem ở bên tay phải RStudio
có một thẻ Environment
, thẻ này chứa thông tin và đầy đủ hơn cả hàm ls()
:D
4. Tạo và thao tác với vector:
(sẽ có một bài viết chi tiết hơn về vector
trong R)
vector
là một kiểu được dựng sẳn của R. vector
ở đây không có nghĩa là một vector
số học, mà nó có thể là một vector
của một kiểu bất kì.
vector1 = c(1,2,3,4)
vector2 = c(4,5,6,7)
print(vector1 + vector2)
print(vector1 * vector2)
[1] 5 7 9 11
[1] 4 10 18 28
Thậm chí cả một vector
chuổi ký tự:
vector3 = c('a', 'ab', 'abcd')
…và tất nhiên nếu bạn lấy một vector
số cộng với một vector
chuổi ký tự thì R sẽ báo lỗi trên màn hình R-prompt
.
vector1 + vector3
Error in vector1 + vector3 : non-numeric argument to binary operator
5. Tạo và thao tác với matrix:
(sẽ có một bài viết chi tiết hơn về matrix
trong R)
Tạo một ma trận 2x3 trên R bằng một vector
như sau:
m <- matrix(c(1,2,3,4,5,6), nrow=2, ncol=3)
m
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
Hoặc có thể khai báo đơn giản số dòng nrow
:
m <- matrix(c(1,2,3,4,5,6), nrow=2)
m
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
6. Tạo và thao tác với list:
(sẽ có một bài viết chi tiết hơn về list
trong R)
Chúng ta có thể tạo list
một danh sách gồm các object
khác nhau về kiểu. Với các ngôn ngữ khác như Python
thì list
không lưu tên định danh của các object
con. Với R chúng ta có thể lưu lại tên của nó để tiện truy cập qua $
.
l <- list(email="quangtiencs@gmail.com", website="thetalog.com")
l
Kết quả xuất hiện như sau:
$email
[1] "quangtiencs@gmail.com"
$website
[1] "thetalog.com"
Chúng ta có thể truy cập đến biến email
trong list
như sau:
l$email
[1] "quangtiencs@gmail.com"
Ngoài ra thì list
lưu các biến con bên trong nó có thứ tự từ 1, ta có thể trích từng biến ra từ index
của nó:
l[1]
$email
[1] "quangtiencs@gmail.com"
Hoặc chỉ lấy ra giá trị từ index
thứ nhất:
l[[1]]
[1] "quangtiencs@gmail.com"
7. Tạo và thao tác với data.frame:
(sẽ có một bài viết chi tiết hơn về data.frame
trong R)
Để tạo một data.frame
(bảng dữ liệu) chúng ta có thể tạo từ các vector
dữ liệu:
ten <- c("Thien", "Tram", "Khai")
gioitinh <- c("Nam", "Nu", "Nam")
dotuoi <- c(20,21,22)
# Tạo một data.frame
thongtin <- data.frame(ten, gioitinh, dotuoi)
print(thongtin)
ten gioitinh dotuoi
1 Thien Nam 20
2 Tram Nu 21
3 Khai Nam 22
8. Định nghĩa một function trong R:
Hàm trong R là một object
, khi định nghĩa một hàm thì chúng ta cần lưu ý những điểm sau:
- Input: Đầu vào là gì? Tên của các tham số đầu vào.
- Output: Giá trị tính ra được bởi hàm.
Chẳng hạn hàm sau để tính ước số chung lớn nhất của hai số a
và b
(Euclidean algorithm)
greatestCommonDivisor <- function(a, b){
if (b == 0) {
return(a)
}
else {
return(greatestCommonDivisor(b, a %% b))
}
}
Thử với số 24 và 54 nhé:
greatestCommonDivisor(24,56)
[1] 8