Tạo một phương thức S3 (2)
Nếu không tìm được phương thức phù hợp cho một generic, R sẽ báo lỗi. Ví dụ, hiện tại get_n_elements() chỉ có phương thức cho data.frame. Nếu bạn truyền một ma trận vào get_n_elements(), bạn sẽ thấy lỗi.
> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"
Thay vì phải viết hàng chục phương thức cho mọi kiểu đầu vào, bạn có thể tạo một phương thức xử lý tất cả các kiểu chưa có phương thức riêng. Đây được gọi là phương thức default; nó luôn có tên generic.default. Ví dụ, print.default() (docs sẽ in bất kỳ kiểu đối tượng nào không có phương thức print() (docs) riêng.
Bài tập này là một phần của khóa học
Lập trình hướng đối tượng với S3 và R6 trong R
Hướng dẫn bài tập
Hàm generic get_n_elements() và một phương thức cho data.frame đã được định nghĩa trong không gian làm việc của bạn.
- Dùng
ls.str()(docs) để khám phá không gian làm việc. - Viết một phương thức S3 mặc định cho
get_n_elements().- Tên hàm nên là tên generic, sau đó là một
.rồi đếndefault. - Tham số đầu vào nên là
xvà.... - Phần thân hàm chỉ một dòng, trả về số phần tử trong một đối tượng bất kỳ. Dùng cùng kỹ thuật như bài Make it Classy (1) với ván cờ.
- Tên hàm nên là tên generic, sau đó là một
- Gọi phương thức của bạn trên bộ dữ liệu
ability.cov(docs) và gán kết quả vào biếnn_elements_ability.cov.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# View predefined objects
___
# Create a default method for get_n_elements
___ <- ___
# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___