" Advanced R " de Hadley Wickham tiene algunas muy buenas introducciones y referencias. Estoy replicando esta sección para una mejor indexación.
Escogiendo un sistema
Tres sistemas OO son mucho para un idioma, pero para la mayoría de la programación R, S3 es suficiente. En R, generalmente crea objetos y métodos bastante simples para funciones genéricas preexistentes como print (), summary () y plot (). S3 se adapta bien a esta tarea, y 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 de manera eficiente 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 está bien escrito y bien comentado, y la viñeta que la acompaña (vignette ("Intro2Matrix", package = "Matrix")) ofrece una buena visión general de la estructura del paquete. S4 también es utilizado ampliamente por los paquetes de bioconductores, que necesitan modelar interrelaciones complicadas entre objetos biológicos. Bioconductor proporciona muchos buenos recursos para aprender S4. Si ha dominado S3, S4 es relativamente fácil de aprender; las ideas son todas iguales
Si ha programado en un lenguaje OO convencional, RC parecerá muy natural. Pero debido a que pueden introducir efectos secundarios a través del estado mutable, son más difíciles de entender. Por ejemplo, cuando generalmente llama a f (a, b) en R, puede suponer que a y b no se modificarán. Pero si ayb son objetos RC, podrían modificarse en el lugar. En general, cuando usa objetos RC, desea minimizar los efectos secundarios tanto como sea posible, y usarlos solo donde los estados mutables sean absolutamente necesarios. La mayoría de las funciones aún deben ser "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 programación S4 ".
Hay una serie de otros recursos interesantes si sigue sus consejos.
John M. Chambers dice en "Programación orientada a objetos, programación funcional y R" :
R también ha sido fuertemente influenciado por las ideas de programación funcional y, en particular, por el deseo de combinar programación funcional con programación orientada a objetos.
Agregaría algo que no está directamente relacionado con la pregunta, pero a lo largo de la misma idea: "DataFrames in Spark for Large Scale Data Science" . Como esto acerca a Scala y R, podría surgir una gran sinergia funcional / OO.