Tôi đang đọc cuốn sách Nâng cao R của Hadley Wickham, cụ thể là hướng dẫn viên của OO (http://adv-r.had.co.nz/OO-essentials.html). Bài tập đầu tiên trong chương đó như sau:Tại sao hàm t trả về giá trị t.test cho các đối tượng có lớp được đặt thành "test"?
Đọc mã nguồn cho t() và t.test() và xác nhận rằng t.test() là một phương thức S3 chung và không phải là S3. Điều gì xảy ra nếu bạn tạo một đối tượng có kiểm tra lớp và gọi t() với nó?
Nếu tôi hiểu chương này một cách chính xác, chúng tôi có thể xác nhận rằng t() và t.test() là chung, vì chúng sử dụng hàm UseMethod() trong mã nguồn. phương thức (t) trả về t.data.frame, t.default và t.ts * như các phương thức của hàm t(). Tại sao sau đó, nếu cả hai đều là S3 generics và t không có phương thức t.test, thì mã sau có trả về test t không?
a <- structure(1:4, class = "test")
t(a)
Dự đoán của tôi sẽ là sử dụng phương pháp mặc định cho lớp "test" và t.default (a) chuyển vị trí theo logic mà tôi cho là đúng. Vậy t.test đến từ đâu?
OK! Cảm ơn bạn đã giải thích kỹ lưỡng! – M4RT1NK4