Hadley Wickham's " R avanzado " tiene una muy buena introducción y referencias. Reproduzco esta sección para una mejor indexación.
Elegir un sistema
Tres sistemas OO es mucho para un lenguaje, pero para la mayoría de la programación en R, S3 es suficiente. En R se suelen crear objetos y métodos objetos y métodos para funciones genéricas preexistentes como print() summary(), y plot(). S3 es muy adecuado para esta tarea, y la la mayoría del código OO que he escrito en R es S3. S3 es un poco peculiar, pero hace el trabajo con un mínimo de código.
Si está creando sistemas más complicados de objetos interrelacionados, S4 puede ser más apropiado. Un buen ejemplo es el paquete Matrix de Douglas Bates y Martin Maechler. Está diseñado para almacenar y calcular eficientemente y calcular con muchos tipos diferentes de matrices dispersas. A partir de la versión 1.1.3, define 102 clases y 20 funciones genéricas. El paquete paquete está bien escrito y comentado, y la viñeta que lo acompaña acompañante (vignette("Intro2Matrix", package = "Matrix")) da una buena de la estructura del paquete. S4 también se utiliza ampliamente paquetes de Bioconductor, que necesitan modelar complicadas interrelaciones complicadas entre objetos biológicos. Bioconductor ofrece muchos buenos recursos para aprender S4. Si ha dominado S3, S4 es S4 es relativamente fácil de aprender; las ideas son las mismas, sólo es más formal, más estricta y más verbosa.
Si has programado en un lenguaje OO convencional, RC te parecerá muy natural. Pero como pueden introducir efectos secundarios a través del estado mutable estado mutable, son más difíciles de entender. Por ejemplo, cuando se suele llamar a f(a, b) en R puedes asumir que a y b no se modificarán. Pero si a y b son objetos RC, podrían ser modificados en el lugar. En general, cuando se utilizan objetos RC se quiere minimizar al máximo los efectos secundarios efectos secundarios, y utilizarlos sólo cuando los estados mutables sean absolutamente necesarios. La mayoría de las funciones deberían seguir siendo "funcionales", y libres de efectos secundarios. Esto hace que el código sea más fácil de razonar y más fácil de entender para otros programadores de R.
Hace referencia a " Un tutorial práctico sobre la programación de S4 ".
Hay otros recursos interesantes si se siguen sus indicaciones.
John M. Chambers dice en "Programación orientada a objetos, programación funcional y R" :
R también se ha visto fuertemente influenciado por las ideas de la y, en particular, por el deseo de combinar la programación funcional con la programación orientada a objetos
Añadiría algo que no está directamente relacionado con la pregunta pero que va en la misma línea: "DataFrames en Spark para la ciencia de datos a gran escala" . Dado que esto acerca a Scala y a R, podría surgir una gran sinergia OO/funcional.