Trong phần này, ta sẽ tìm hiểu một số khái niệm cơ bản của R, trong đó một số nội dung đã được đề cập sơ lược ở các phần trước.
Đây là một khái niệm khá trừu tượng. Một cách khái quát, ta có thể xem R làm việc với các đối tượng: nhận các đối tượng để xử lý, biến đổi các đối tượng ấy, tạo ra những đối tượng mới. Đối tượng có thể chỉ là một con số hay một ký tự, nhưng có thể là cả một bảng với nhiều dòng, nhiều cột, hay có thể là kết quả của toàn bộ một quá trình xử lý.
Để có thể làm việc với các đối tượng, ta cần đặt tên cho nó và lúc bấy giờ ta thường gọi là biến. Đối tượng thường được khởi tạo bằng lệnh gán như:
x <- 12.34
Sau khi khởi tạo, đối tượng được cấp phát một vùng nhớ trong máy tính để lưu giữ nội dung của nó. Nhờ vậy ta có thể sử dụng tên của đối tượng thay cho giá trị của nó để xử lý, thí dụ như:
exp(x) + x^3
Ta có thể quan sát tab Environment để nắm bắt được tên các đối tượng đã được khởi tạo cũng như một số thông tin có liên quan đến các đối tượng ấy như kiểu dữ liệu, số thành phần.
Nếu ta muốn loại bỏ một đối tượng `x` thì ta dùng lệnh "remove" ở dạng sau:
rm(x)
Đặt tên cho đối tượng
R không có nhiều ràng buộc về tên đối tượng hay tên biến. Ta chỉ cần lưu ý một số điểm sau:
Ngoài ra ta có thể sử dụng một số quy ước khác và có tính gợi nhớ để lệnh dễ đọc, dễ hiểu hơn.
Ghi chú : Để tuân thủ các quy ước trên và không bị lỗi khi thao tác với dữ liệu, trong các trường hợp bất khả kháng, chúng tôi sử dụng tiếng Việt không dấu để đặt tên cho các đối tượng và các thành phần dạng ký tự có liên quan như "xoai" thay cho "xoài". Khi có sự trùng lặp, chúng tôi sẽ thêm dấu theo quy định của kiểu gõ Telex. Thí dụ như "duwa" thay cho "dưa", "duwsa" thay cho "dứa", "duwfa" thay cho "dừa". Trong một số trường hợp, khoảng trắng được thay thế bằng dấu gạch thấp (_) như "san_luong" hay sử dụng chữ hoa như "SanLuong" hoặc cả hai như San_Luong.
Qua phần làm quen với R, ta thấy hàm được sử dụng rất phổ biến. Hàm được dùng để thực hiện một công việc cụ thể nào đấy như tính toán, vẽ, truy xuất dữ liệu. Khi sử dụng hàm, ta phải nêu tên hàm và theo sau là cặp dấu ngoặc đơn (); trong cặp dấu ngoặc này là đối số.
Đối số là các thông tin được hàm sử dụng để thực hiện công việc tương ứng. Tùy theo hàm mà số lượng đối số sẽ thay đổi. Khi hàm có nhiều đối số, giữa các đối số có dấu phẩy để tách biệt chúng với nhau Cũng có những đối số không bắt buộc phải khai báo, đặc biệt khi giá trị của đối số là mặc định theo R. Cũng có một số ít hàm không cần đối số như hàm date.
Phần lớn các hàm mà ta sử dụng do R cung cấp thông qua các phụ kiện. Tuy nhiên ta cũng có thể tự tạo các hàm để giải quyết các vấn đề riêng biệt.
Một số đáng kể các hàm của R có thể đảm nhiệm hai chức năng: lấy thông tin từ đối tượng và xác lập thông tin cho đối tượng. Thí dụ hàm length:
n <- length(vec1) : lấy cỡ của vectơ vec1 và gán giá trị này cho biến `n`,length(vec2) <- 6 : gán cho cỡ của vectơ vec2 là 6.
Cũng như các chương trình hay phần mềm khác, ta có thể nhờ R trợ giúp, cung cấp thông tin về một chủ đề nào đó. Khi ấy ta có thể sử dụng một số cách như được mô tả sau đây.
Dùng trình đơn Help của RStudio
Khi kích chuột vào Help trên thanh trình đơn, xuất hiện một trình đơn. Kích chọn chức năng "R Help", tại tab Help của khung Đa chức năng sẽ xuất hiện trang chủ của bộ chương trình trợ giúp. Tại trang này có nhiều liên kết đến các trang khác chứa các thông tin, nội dung hay tài liệu để tra cứu, và ta có thể kích chọn liên kết tương ứng với nội dung cần tìm. Ta cũng có thể gõ tên của chủ đề vào ô Tìm kiếm đặt phía trên bên phải của trang chủ này
Dùng câu lệnh
Tùy theo chủ đề cần tìm kiếm mà ta có thể sử dụng một số câu lệnh để thu được thông tin mong muốn. Sau đây là một số trường hợp thông dụng.
help với đối số là tên hàm cần tìm thông tin, trong tab Help sẽ hiện các nội dung cần thiết. Thí dụ ta muốn tìm thông tin về hàm plot thì ta có thể dùng
?plot hay help("plot")help.search với đối số là tên chủ đề. Thí dụ ta muốn tìm thông tin về chủ đề "standard" thì ta dùng:
??standard hay help.search("standard")apropos. Thí dụ như apropos("stan")help.start()
Trước khi chính thức làm việc với R, ta cần xác lập một thư mục để R hoạt động. Trong thư mục này sẽ chứa các nội dung cần thiết để cung cấp cho R như tập tin dữ liệu, đồng thời nó cũng chứa các thành quả mà R thực hiện được (có thể mang tính tạm thời).
Khi khởi động chương trình, R đã chọn sẵn thư mục hoạt động. Để xác định vị trí của thư mục này, ta dùng lệnh sau:
getwd()
Để xác lập lại thư mục này ta có thể :
setwd với đối số là đường dẫn đến thư mục ta chọn. Thí dụ:
setwd(D:/Hoc R/Thuc Hanh/Bai 1)
Lưu ý là trong R, ta sử dụng dấu gạch nghiêng tới "/" trong đường dẫn thay vì dấu gạch nghiêng lùi "\" trong Windows.Việc xác lập thư mục hoạt động sẽ giúp ta thuận tiện hơn khi làm việc sau này, thí dụ các câu lệnh dùng để lưu các kết quả được đơn giản hơn. Thông thường sau khi chọn lựa lại thư mục hoạt động, ta phải đóng RStudio rồi cho khởi động lại, việc lựa chọn mới có hiệu lực.
Để thăm dò nội dung của thư mục hoạt động ta có thể dùng tab Files hay dùng lệnh dir.
Để xây dựng một chương trình bằng R, ta nên khởi đầu bằng lệnh xác lập thư mục hoạt động.
R sử dụng bốn dạng tập tin chính :
source.load.read.csv hay qua chức năng Import Dataset tại tab Environment của RStudio.read.table hay qua chức năng Import Dataset tại tab Environment của RStudio.
Trong một phiên (session) làm việc của R (từ khi khởi động đến khi đóng chương trình), quá trình tương tác giữa người và máy xẩy ra: người ra lệnh cho máy bằng cách nhập lệnh và các thông tin, máy thực hiện lệnh và xuất kết quả (nếu có) ra màn hình.
Như vậy thiết bị nhập chuẩn là bàn phím và thiết bị xuất chuẩn là màn hình. Tuy nhiên ta có thể nhập vào máy và xuất kết quả theo các phương cách khác.
Một trong các cách nhập phổ biến là chuẩn bị sẵn các lệnh và thông tin cần thiết vào một tập tin đặc biệt chỉ chứa các đoạn lệnh và ghi chú thiết yếu. Ta tạm gọi tập tin này là đoạn trình (script). Sau đó dùng lệnh source để nhập đoạn trình vào R. Trong lệnh này cần có đường dẫn (như D:/xx/yy/ten_doan_trinh.R), nếu không có đường dẫn, R sẽ đi tìm trong thư mục hoạt động. Theo quy định chung, tên đoạn trình có phần mở rộng là .R nhưng điều này cũng không bắt buộc
R có một số phương cách xuất khác nhau (device). Một trong các cách xuất phổ biến là xuất nội dung ra một tập tin với lệnh sink(tap_tin_xuat). Ta có một số trường hợp sau:
append = TRUE thì nội dung mới sẽ ghi tiếp theo sau phần nội dung cũ.split = TRUE thì nội dung mới cũng đồng thời xuất ra màn hình,sink không có đối số thì nội dung chỉ được xuất ra màn hình.Tuy nhiên nếu nội dung xuất ở dạng đồ họa thì lệnh sink không có hiệu lực. Khi ấy ta phải dùng các hàm cho trong Bảng 1.
| Hàm sử dụng | Loại tập tin |
|---|---|
| pdf("ten_tap_tin.pdf") | |
| win.metafile("ten_tap_tin.wmf") | Windows metafile |
| png("ten_tap_tin.png") | png |
| jpeg("ten_tap_tin.jpg") | jpeg |
| bmp("ten_tap_tin.bmp") | bmp |
| postscript("ten_tap_tin.ps") | PostScript |
Sau đó sử dụng lệnh dev.off để nội dung được xuất trở lại màn hình.
Để biết được phương cách xuất hiện hành, sử dụng lệnh dev.cur. Để xác lập phương cách xuất, dùng lệnh dev.set(n) với n lá số nguyên tương ứng với phương cách xuất.
Khi ta sử dụng RStudio, các sự trợ giúp ở dạng đồ họa và sử dụng chuột sẽ làm việc nhập và xuất thuận tiện hơn khá nhiều.
Khi mới khởi động, ta thấy R có thể thực hiện nhiều công việc khác nhau thông qua các hàm. Tuy nhiên khi giải quyết các vấn đề phức tạp, khi cần thực hiện các chức năng chuyên biệt hay nâng cao, các hàm này chưa đủ để đáp ứng các yêu cầu đó. Khi ấy ta cần sử dụng các hàm đặt trong các phụ kiện (package).
Thật ra, khi cài đặt R, ta cũng đã cài đặt và kích hoạt sẵn phụ kiện “base” và một số phụ kiện khác như “stats” hay “graphics” gồm các hàm thực hiện các chức năng cơ bản. Để biết những phụ kiện nào đã được cài đặt, ta dùng tab Packages ở khung Đa chức năng hay sử dụng lệnh installed.packages.
Danh sách và nội dung các nhóm phụ kiện của R được trình bày tại CRAN Task Views
Cài đặt phụ kiện
Trong một phụ kiện, ngoài các hàm đã được xây dựng sẵn, còn có những tài nguyên khác như các bộ dữ liệu, các đối tượng đi kèm. Khi ta muốn sử dụng những tài nguyên mà phụ kiện chứa nó chưa có sẵn trong ổ cứng của máy tính, ta cần cài đặt phụ kiện từ CRAN (vì vậy máy cần được kết nối với Internet). Ta có thể dùng những cách sau:
install.packages("ten_phu_kien")Lưu ý là ta có thể cài nhiều phụ kiện cùng một lúc. Ngoài ra một số phụ kiện cần một số phụ kiện khác (dependencies) để hoạt động ; nếu trong máy tính chưa có, các phụ kiện phụ thuộc này cũng được cài đặt.
Khi ta muốn xóa một phụ kiện khỏi ổ cứng của máy tính, ta có thể dùng lệnh:
remove.packages("ten_phu_kien")
Sử dụng phụ kiện
Để sử dụng tài nguyên của một phụ kiện đã được cài đặt, ta cần kích hoạt nó bằng những cách sau:
library("ten_phu_kien"),Để liệt kê tên các phụ kiện đã được kích hoạt, ta dùng lệnh
search()
Để tìm hiểu thêm về các tài nguyên cũng như thông tin của phụ kiện, ta dùng lệnh library(help("ten_phu_kien"))
Ta có thể tham khảo thêm về các phụ kiện nên sử dụng để giải quyết một vấn đề nào đấy tại bài viết "Recommended Packages" của Garret Testing tại website RStudio.
Trang web này được cập nhật lần cuối ngày 25/11/2018
R
Các chuyên đề
Xử lý dữ liệu
Ma trận
R