Tutorial sulla programmazione orientata agli oggetti in R [chiuso]


15

Esistono buoni tutorial sulla programmazione orientata agli oggetti in R?

Sarebbe bello se includesse quanto segue:

  • come definire una classe;
  • differenze tra le classi S3 e S4;
  • sovraccarico dell'operatore (mi piacerebbe poter scrivere a+bdove ae bsono istanze della classe che ho in mente).

Risposte:


10

Il wiki di Hadley Wickham su devtools è una grande risorsa per le informazioni necessarie in una forma concisa. Tuttavia, se si desidera una risorsa esauriente, la sezione OOP del manuale in lingua R può essere utile. Sono sicuro che i membri più esperti avranno suggerimenti migliori.



4

" Advanced R " di Hadley Wickham ha alcune intro e riferimenti molto validi. Sto replicando questa sezione per una migliore indicizzazione.

Scegliere un sistema

Tre sistemi OO sono molti per una lingua, ma per la maggior parte della programmazione R, S3 è sufficiente. In R di solito crei oggetti e metodi abbastanza semplici per funzioni generiche preesistenti come print (), summary () e plot (). S3 è adatto a questo compito e la maggior parte del codice OO che ho scritto in R è S3. S3 è un po 'eccentrico, ma ottiene il lavoro fatto con un minimo di codice.

Se stai creando sistemi più complicati di oggetti correlati, S4 potrebbe essere più appropriato. Un buon esempio è il pacchetto Matrix di Douglas Bates e Martin Maechler. È progettato per archiviare e calcolare in modo efficiente molti tipi diversi di matrici sparse. A partire dalla versione 1.1.3, definisce 102 classi e 20 funzioni generiche. Il pacchetto è ben scritto e ben commentato e la vignetta di accompagnamento (vignetta ("Intro2Matrix", pacchetto = "Matrix")) offre una buona panoramica della struttura del pacchetto. S4 è anche ampiamente utilizzato dai pacchetti di bioconduttori, che devono modellare complicate interrelazioni tra oggetti biologici. Il bioconduttore offre molte buone risorse per l'apprendimento dell'S4. Se hai imparato S3, S4 è relativamente facile da raccogliere; le idee sono tutte uguali,

Se hai programmato in un linguaggio OO tradizionale, RC sembrerà molto naturale. Ma poiché possono introdurre effetti collaterali attraverso uno stato mutevole, sono più difficili da capire. Ad esempio, quando di solito si chiama f (a, b) in R, si può presumere che aeb non verrà modificato. Ma se aeb sono oggetti RC, potrebbero essere modificati sul posto. In genere, quando si utilizzano oggetti RC, si desidera ridurre al minimo gli effetti collaterali e utilizzarli solo dove sono assolutamente necessari stati mutabili. La maggior parte delle funzioni dovrebbe essere ancora "funzionale" e priva di effetti collaterali. Questo rende il codice più facile da ragionare e più facile da comprendere per altri programmatori R.

Fa riferimento a " Un tutorial pratico sulla programmazione S4 ".

Ci sono molte altre risorse interessanti se segui i suoi suggerimenti.

John M. Chambers afferma in "Programmazione orientata agli oggetti, programmazione funzionale e R" :

R è stato anche fortemente influenzato dalle idee di programmazione funzionale e, in particolare, dal desiderio di combinare la programmazione funzionale con quella orientata agli oggetti

Aggiungerebbe qualcosa non direttamente correlato alla domanda ma lungo la stessa idea: "DataFrames in Spark per la scienza dei dati su larga scala" . Dal momento che questo avvicina Scala e R, potrebbe derivarne una grande sinergia OO / funzionale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.