15 votos

Tutoriales sobre programación orientada a objetos en R

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

Sería estupendo que incluyera lo siguiente:

  • cómo definir una clase;
  • diferencias entre las clases S3 y S4;
  • sobrecarga de operadores (me gustaría poder escribir a+b donde a y b son instancias de la clase que tengo en mente).

10voto

merriam Puntos 67

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

7voto

DavLink Puntos 101

Además de @suncoolsu excelente respuesta, hay Una (no tan) breve introducción a la S4 por Christophe Genolini. Está disponible en el sitio web de CRAN.

4voto

SemanticBeeng Puntos 41

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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X