[R-es] Una guía de estilo para programar en R... ¿comentarios?

Oscar Perpiñan Lamigueiro oscar.perpinan en upm.es
Mar Nov 23 22:36:51 CET 2010


Hola. 

Contesto sobre el correo.

On Fri, 5 Nov 2010 13:11:15 +0100
Ramon Diaz-Uriarte <rdiaz02 en gmail.com> wrote:

> 2010/11/4 Carlos J. Gil Bellosta <cgb en datanalytics.com>:
> > Fue una experiencia bastante frustrante: mis cañonazos malhirieron la
> > mosca paro no la mataron del todo. En la versión final del paquete se
> > cayó la clase S4. Y, personalmente, trataré de evitarlas en la medida
> > de lo posible. En eso convenimos Google y yo.

En mi opinión, el uso de S3 o S4 depende de los objetivos a conseguir. Yo he construido un paquete basado casi en su totalidad en clases y métodos S4. Partía de una versión anterior construida en S3, y me decidí a la conversión porque necesitaba trabajar con objetos complejos, y emplear métodos que fuesen capaces de reaccionar a "signatures" mixtas. Después del esfuerzo de aprendizaje y reescritura, estoy convencido de las bondades de S4, y convencido también de que las funcionalidades de la versión actual del paquete no las habría conseguido con S3 (al menos no de una forma limpia y robusta).

> > Recuerdo que durante mi periodo de máxima frustración hablé con Ramón
> > Díaz Uriarte que, si no recuerdo mal, me desaconsejó su uso. Y me
> > comentó que había algún/os peso/s pesado/s de R que se habían
> > pronunciado en el mismo sentido. No sé si tendrá algo que añadir (y si
> > he errado en el sentido de la cita, espero que no se lo tenga
> > demasiado en cuenta a mi floja memoria).
> >
 
> Pego aquí algunos enlaces que tengo al respecto:

Buena lista de enlaces, muy ilustrativo. Gracias! Supongo que cada uno prestamos más atención a lo que queremos escuchar, pero después de haberme recorrido estos "thread" yo percibo una opinión ampliamente favorable hacia S4...
 
> 
> Hay comentarios de Frank Harell, Brian Ripley, Terry Therneau, etc. El
> último enlace, en particular, es de un largo thread. Dicho lo
> anterior, hay otros que prefieren con mucho S4 (ej., veanse libros de
> R. Gentleman y J. Chambers), y S4 es el tipo de OOP "oficial" de
> BioConductor. Pero si uno revisa los archivos de BioC (hace más de 5
> años?), verá que no todo el mundo (incluyendo algunos nombres
> ilustres) era entusiasta de S4.

En la actualidad, más del 50% de los paquetes de BioC están construidos en S4: http://www.bioconductor.org/help/course-materials/2010/AdvancedR/S4InBioconductor.pdf.

> > Creo que las clases S3 están para quedarse. No sé hasta qué punto la
> > complejidad añadida que supone el uso de clases S4 van a contribuir a
> > su popularización. Además, existen alternativas a las clases S3 y S4
> > (p.e., http://cran.r-project.org/web/packages/proto/) que bien
> > pudieran imponerse. 

"proto" lo utilizan 11 paquetes en CRAN, y de ellos 3 están escritos por el "maintainer" de 
"proto". No sé cual será el futuro de S4, pero teniendo en cuenta que proto empezó en el 2005, no parece una alternativa muy potente. 
Y parece que su aplicación es más reducida: el "maintainer" de proto dice que "proto tends to apply in user interface applications" (http://tolstoy.newcastle.edu.au/R/e8/help/09/10/2601.html).


Sea como sea, como decía al principio, opino que hay que elegir (o construir) las herramientas adecuadas para lo que se necesita, sean S3, S4 o lo que surja.

Saludos.

Oscar.



Más información sobre la lista de distribución R-help-es