Tutorial tentang pemrograman berorientasi objek dalam R [ditutup]


15

Apakah ada tutorial bagus tentang pemrograman berorientasi objek di R?

Akan lebih bagus jika itu termasuk yang berikut:

  • cara mendefinisikan kelas;
  • perbedaan antara kelas S3 dan S4;
  • operator overloading (Saya ingin dapat menulis di a+bmana adan bmerupakan contoh dari kelas yang ada dalam pikiran saya).

Jawaban:


10

Wiki Hadley Wickham di devtools adalah sumber yang bagus untuk informasi yang diperlukan dalam bentuk yang ringkas. Namun, jika Anda menginginkan sumber daya yang lengkap, bagian OOP manual bahasa R mungkin membantu. Saya yakin anggota yang lebih berpengalaman akan memiliki saran yang lebih baik.



4

Hadley Wickham's " Advanced R " memiliki beberapa intro dan referensi yang sangat bagus. Saya mereplikasi bagian ini untuk pengindeksan yang lebih baik.

Memilih sistem

Tiga sistem OO banyak untuk satu bahasa, tetapi untuk sebagian besar pemrograman R, S3 sudah cukup. Dalam R Anda biasanya membuat objek dan metode yang cukup sederhana untuk fungsi generik yang sudah ada sebelumnya seperti print (), ringkasan (), dan plot (). S3 sangat cocok untuk tugas ini, dan sebagian besar kode OO yang saya tulis dalam R adalah S3. S3 sedikit aneh, tetapi menyelesaikan pekerjaan dengan kode minimal.

Jika Anda membuat sistem yang lebih rumit dari objek yang saling terkait, S4 mungkin lebih tepat. Contoh yang baik adalah paket Matrix oleh Douglas Bates dan Martin Maechler. Ini dirancang untuk secara efisien menyimpan dan menghitung dengan berbagai jenis matriks jarang. Pada versi 1.1.3, ia mendefinisikan 102 kelas dan 20 fungsi generik. Paket ditulis dengan baik dan berkomentar dengan baik, dan sketsa yang menyertai (sketsa ("Intro2Matrix", package = "Matrix")) memberikan gambaran yang baik tentang struktur paket. S4 juga digunakan secara luas oleh paket Bioconductor, yang perlu memodelkan hubungan timbal balik yang rumit antara objek biologis. Bioconductor menyediakan banyak sumber daya yang baik untuk belajar S4. Jika Anda sudah menguasai S3, S4 relatif mudah diambil; semua idenya sama,

Jika Anda telah memprogram dalam bahasa OO umum, RC akan tampak sangat alami. Tetapi karena mereka dapat memperkenalkan efek samping melalui keadaan yang bisa berubah, mereka lebih sulit untuk dipahami. Misalnya, ketika Anda biasanya memanggil f (a, b) dalam R Anda dapat mengasumsikan bahwa a dan b tidak akan dimodifikasi. Tetapi jika a dan b adalah objek RC, mereka mungkin dimodifikasi di tempat itu. Secara umum, ketika menggunakan objek RC Anda ingin meminimalkan efek samping sebanyak mungkin, dan menggunakannya hanya di mana keadaan bisa berubah mutlak diperlukan. Mayoritas fungsi masih harus "fungsional", dan bebas dari efek samping. Ini membuat kode lebih mudah untuk dipikirkan dan lebih mudah dipahami oleh programmer R lainnya.

Ia merujuk " Tutorial praktis tentang pemrograman S4 ".

Ada sejumlah sumber daya menarik lainnya jika Anda mengikuti petunjuknya.

John M. Chambers mengatakan dalam "Pemrograman Berorientasi Objek, Pemrograman Fungsional dan R" :

R juga telah sangat dipengaruhi oleh ide-ide pemrograman fungsional dan, khususnya, oleh keinginan untuk menggabungkan fungsional dengan pemrograman berorientasi objek

Akan menambahkan sesuatu yang tidak terkait langsung dengan pertanyaan tetapi sepanjang ide yang sama: "DataFrames di Spark untuk Ilmu Data Skala Besar" . Karena ini membawa lebih dekat Scala dan R, mungkin ada sinergi OO / fungsional besar yang keluar dari ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.