R'de nesne yönelimli programlama hakkında öğreticiler [kapalı]


15

R'de nesne yönelimli programlama hakkında iyi öğreticiler var mı?

Aşağıdakileri içermesi harika olurdu:

  • bir sınıfın nasıl tanımlanacağı;
  • S3 ve S4 sınıfları arasındaki farklar;
  • operatör aşırı yükleme ( aklımdaki sınıfın a+bnerede ave nerede olduğunu yazabilmek istiyorum b).

Yanıtlar:


10

Hadley Wickham'ın devtools üzerindeki wiki'si , kısa bir formda gerekli bilgiler için harika bir kaynaktır. Ancak, kapsamlı bir kaynak istiyorsanız, R dil kılavuzunun OOP bölümü yardımcı olabilir. Eminim daha deneyimli üyelerin daha iyi önerileri olacaktır.



4

Hadley Wickham'ın " Advanced R " çok iyi giriş ve referanslara sahiptir. Daha iyi indeksleme için bu bölümü çoğaltıyorum.

Bir sistem seçmek

Üç OO sistemi bir dil için çok şey ifade eder, ancak çoğu R programlama için S3 yeterlidir. R'de genellikle print (), özet () ve plot () gibi önceden var olan genel işlevler için oldukça basit nesneler ve yöntemler oluşturursunuz. S3 bu görev için çok uygundur ve R'de yazdığım OO kodunun çoğu S3'tür. S3 biraz tuhaf, ancak işi minimum kodla hallediyor.

İlişkili nesnelerden daha karmaşık sistemler oluşturuyorsanız, S4 daha uygun olabilir. Buna iyi bir örnek, Douglas Bates ve Martin Maechler'in Matrix paketi. Birçok farklı seyrek matris türünü verimli bir şekilde depolamak ve hesaplamak için tasarlanmıştır. 1.1.3 sürümünden itibaren 102 sınıf ve 20 genel fonksiyon tanımlamaktadır. Paket iyi yazılmış ve iyi yorumlanmış ve beraberindeki vinyet (vinyet ("Intro2Matrix", package = "Matrix")) paketin yapısına iyi bir genel bakış sağlar. S4 ayrıca biyolojik nesneler arasındaki karmaşık ilişkilerin modellenmesi gereken Biokondüktör paketleri tarafından yaygın olarak kullanılmaktadır. Bioiletken S4 öğrenmek için birçok iyi kaynak sağlar. S3'te uzmanlaştıysanız, S4'ü almak nispeten kolaydır; fikirlerin hepsi aynı,

Ana akım bir OO dilinde programladıysanız, RC çok doğal görünecektir. Ancak değişebilir durum yoluyla yan etkiler yaratabilecekleri için anlaşılması daha zordur. Örneğin, R'de genellikle f (a, b) öğesini çağırdığınızda, a ve b'nin değiştirilmeyeceğini varsayabilirsiniz. Ancak a ve b RC nesneleriyse, bunlar yerinde değiştirilebilir. Genellikle RC nesnelerini kullanırken yan etkileri mümkün olduğunca en aza indirmek ve bunları yalnızca değişken durumların kesinlikle gerekli olduğu yerlerde kullanmak istersiniz. Fonksiyonların çoğu hala “işlevsel” olmalı ve yan etkileri olmamalıdır. Bu, kodun anlaşılmasını kolaylaştırır ve diğer R programcılarının anlamasını kolaylaştırır.

" S4 programlama üzerine pratik bir öğretici " referansını veriyor .

Eğer işaretçileri takip ederseniz başka ilginç kaynaklar vardır.

John M. Chambers "Nesneye Yönelik Programlama, Fonksiyonel Programlama ve R" de şöyle diyor :

R ayrıca fonksiyonel programlama fikirlerinden ve özellikle işlevselliği nesne yönelimli programlama ile birleştirme arzusundan güçlü bir şekilde etkilenmiştir.

Doğrudan soruyla ilgili olmayan ancak aynı fikirde bir şeyler eklerdim : "Büyük Ölçekli Veri Bilimi için Spark'daki DataFrames" . Bu, Scala ve R'yi yaklaştırdığından, bundan büyük bir OO / fonksiyonel sinerji gelebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.