Tutoriales sobre programación orientada a objetos en R [cerrado]

15

¿Hay buenos tutoriales sobre programación orientada a objetos en R?

Sería genial si incluyera lo siguiente:

  • cómo definir una clase;
  • diferencias entre las clases S3 y S4;
  • sobrecarga del operador (me gustaría poder escribir a+bdónde ay bson instancias de la clase que tengo en mente).
NPE
fuente

Respuestas:

10

La wiki de Hadley Wickham sobre devtools es un gran recurso para obtener la información necesaria de forma concisa. Sin embargo, si desea un recurso exhaustivo, la sección OOP del manual del lenguaje R puede ser útil. Estoy seguro de que los miembros más experimentados tendrán mejores sugerencias.

suncoolsu
fuente
4

" 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.

Semántica
fuente