" Advanced R " de Hadley Wickham a de très bonnes intros et références. Je reproduis cette section pour une meilleure indexation.
Choisir un système
Trois systèmes OO, c'est beaucoup pour un seul langage, mais pour la plupart des programmes R, S3 suffit. Dans R, vous créez généralement des objets et des méthodes assez simples pour des fonctions génériques préexistantes comme print (), summary () et plot (). S3 est bien adapté à cette tâche, et la majorité du code OO que j'ai écrit en R est S3. S3 est un peu décalé, mais il fait le travail avec un minimum de code.
Si vous créez des systèmes plus complexes d'objets interdépendants, S4 peut être plus approprié. Un bon exemple est le package Matrix de Douglas Bates et Martin Maechler. Il est conçu pour stocker et calculer efficacement avec de nombreux types différents de matrices clairsemées. Depuis la version 1.1.3, il définit 102 classes et 20 fonctions génériques. Le package est bien écrit et bien commenté, et la vignette qui l'accompagne (vignette ("Intro2Matrix", package = "Matrix")) donne un bon aperçu de la structure du package. S4 est également largement utilisé par les boîtiers de bioconducteurs, qui doivent modéliser des relations complexes entre les objets biologiques. Le bioconducteur fournit de nombreuses bonnes ressources pour l'apprentissage de S4. Si vous maîtrisez S3, S4 est relativement facile à prendre; les idées sont toutes les mêmes,
Si vous avez programmé dans un langage OO traditionnel, le RC semblera très naturel. Mais parce qu'ils peuvent introduire des effets secondaires à travers un état mutable, ils sont plus difficiles à comprendre. Par exemple, lorsque vous appelez habituellement f (a, b) dans R, vous pouvez supposer que a et b ne seront pas modifiés. Mais si a et b sont des objets RC, ils peuvent être modifiés à la place. En règle générale, lorsque vous utilisez des objets RC, vous souhaitez minimiser autant que possible les effets secondaires et les utiliser uniquement lorsque des états modifiables sont absolument nécessaires. La majorité des fonctions devraient toujours être «fonctionnelles» et exemptes d'effets secondaires. Cela rend le code plus facile à raisonner et plus facile à comprendre pour les autres programmeurs R.
Il fait référence à " Un tutoriel pratique sur la programmation S4 ".
Il existe un certain nombre d'autres ressources intéressantes si vous suivez ses conseils.
John M. Chambers dit dans "Programmation orientée objet, programmation fonctionnelle et R" :
R a également été fortement influencé par les idées de programmation fonctionnelle et, en particulier, par le désir de combiner programmation fonctionnelle et programmation orientée objet
Ajouterait quelque chose qui ne serait pas directement lié à la question, mais dans le même esprit : "DataFrames in Spark for Large Scale Data Science" . Étant donné que cela rapproche Scala et R, il pourrait y avoir une grande synergie OO / fonctionnelle.