Câu trả lời:
Ngoài phản hồi xuất sắc @suncoolsu , còn có Giới thiệu ngắn về A (Không phải vậy) về S4 , bởi Barshe Genolini. Nó có sẵn trên trang web CRAN.
" Advanced R " của Hadley Wickham có một số giới thiệu và tài liệu tham khảo rất hay. Tôi đang nhân rộng phần này để lập chỉ mục tốt hơn.
Chọn một hệ thống
Ba hệ thống OO là rất nhiều cho một ngôn ngữ, nhưng đối với hầu hết lập trình R, S3 là đủ. Trong R, bạn thường tạo các đối tượng và phương thức khá đơn giản cho các hàm chung có sẵn như print (), Tóm tắt () và âm mưu (). S3 rất phù hợp với nhiệm vụ này và phần lớn mã OO mà tôi đã viết trong R là S3. S3 hơi kỳ quặc, nhưng nó hoàn thành công việc với tối thiểu mã.
Nếu bạn đang tạo các hệ thống đối tượng phức tạp hơn, S4 có thể phù hợp hơn. Một ví dụ điển hình là gói Matrix của Douglas Bates và Martin Maechler. Nó được thiết kế để lưu trữ và tính toán hiệu quả với nhiều loại ma trận thưa thớt khác nhau. Kể từ phiên bản 1.1.3, nó định nghĩa 102 lớp và 20 hàm chung. Gói được viết tốt và được nhận xét tốt, và họa tiết đi kèm (họa tiết ("Intro2Matrix", gói = "Ma trận")) cung cấp một cái nhìn tổng quan tốt về cấu trúc của gói. S4 cũng được sử dụng rộng rãi bởi các gói Bioconductor, cần mô hình hóa mối tương quan phức tạp giữa các đối tượng sinh học. Bioconductor cung cấp nhiều tài nguyên tốt cho việc học S4. Nếu bạn đã thành thạo S3, S4 tương đối dễ nhận; các ý tưởng đều giống nhau,
Nếu bạn đã lập trình bằng ngôn ngữ OO chính thống, RC sẽ có vẻ rất tự nhiên. Nhưng bởi vì họ có thể giới thiệu các tác dụng phụ thông qua trạng thái đột biến, nên họ khó hiểu hơn. Ví dụ, khi bạn thường gọi f (a, b) trong R, bạn có thể giả sử rằng a và b sẽ không được sửa đổi. Nhưng nếu a và b là các đối tượng RC, chúng có thể được sửa đổi tại chỗ. Nói chung, khi sử dụng các đối tượng RC, bạn muốn giảm thiểu tác dụng phụ càng nhiều càng tốt và chỉ sử dụng chúng khi các trạng thái có thể thay đổi là hoàn toàn bắt buộc. Phần lớn các chức năng vẫn phải là chức năng, và không có tác dụng phụ. Điều này làm cho mã dễ hiểu hơn và dễ hiểu hơn đối với các lập trình viên R khác.
Ông tham khảo " Một hướng dẫn thực tế về lập trình S4 ".
Có một số tài nguyên thú vị khác nếu bạn theo dõi con trỏ của anh ấy.
John M. Chambers nói trong "Lập trình hướng đối tượng, lập trình chức năng và R" :
R cũng bị ảnh hưởng mạnh mẽ bởi các ý tưởng về lập trình chức năng và đặc biệt, bởi mong muốn kết hợp chức năng với lập trình hướng đối tượng
Sẽ thêm một cái gì đó không liên quan trực tiếp đến câu hỏi nhưng cùng một ý tưởng: "DataFrames trong Spark cho Khoa học dữ liệu quy mô lớn" . Vì điều này mang lại Scala và R gần hơn, có thể có một sức mạnh tổng hợp OO / chức năng tuyệt vời đến từ điều này.