¿Soy un dinosauRio? Sobre las novedades de R

Trato de estar abierto a lo nuevo. Tantos años soportando dinosaurios me han vacunado contra el conservadurismo tecnológico. De hecho, me produce arcadas. La experiencia, no obstante, me ha hecho permeable al efecto Lindy, lo que me da ocasión de saludar a mis amigos emaqueros.

Las cosas cambian y en R estamos viviendo una especie de revolución. Mi argumento, para impacientes, es que:

  • Es más superficial que sustancial: es azúcar sintáctico.
  • En ciertos aspectos, no es positiva y mina ciertos principios valiosos que hicieron de R un lenguaje popular.

Cuento todo esto a raíz de una reseña a un novedoso curso de R. Lo es en tanto que, dicen:

  • Ignora los procedimientos clásicos (old-school) de manipulación de datos en R e introduce directamente dplyr.
  • Llega a ggplot2 sin pasar por plot.

Nunca he sido particularmente partidario de dplyr por varios motivos:

  • Llegó para solucionar problemas que ya no teníamos (gracias a plyr y data.table).
  • No te permite hacer cosas nuevas; pero te obliga a hacerlas de una manera distinta.
  • ¿Es algo más que un poco de azúcar sintáctico?

Ocultar al neófito todo lo que hubo tiene ciertas ventajas (las conozco) pero también un grave inconveniente: esa gente no sabrá leer código ajeno, código anterior. Creo que es mejor enseñar el canon y luego, una vez que alguien sabe escribir

advertirle que hay gente que también escribe, y que es lo mismo,

O que una vez que hace suya la operación (abstracta) groupby, decirle que no hay más remedio que asumir que hay tres o cuatro maneras distintas de transcribirla en R. Que la sintaxis, en definitiva, es una añadidura tan superficial y sutil como la diferencia entre el teclado español y el estadounidense. Que en programación hay que ser chomquista, pensar en la gramática universal y teclear en la sintaxis que toque.

¿Y sobre los gráficos? Bien, los de ggplot2 son resultones. Concedido. Pero muchos no usamos R (solo) para hacer gráficos chulos. Usamos R para analizar datos. Y queremos poder inspeccionar la columna edad con un brevísimo

(¿ocho golpes de tecla?) para entender rápidamente su distribución sin enredarnos en toda la gramática de los gráficos del Sr. Wilkinson.

R no es un lenguaje de programación. R es un entorno para el análisis estadístico y gráfico de datos que también es un lenguaje de programación. Lenguajes de programación hay muchos y de todo pelaje. Entornos para analizar datos, muchos menos y casi todos pésimos. Por eso tenemos que ser cuidadosos en los cambios y sopesar bien lo que se gana y lo que se pierde y, por encima de todo, saber qué somos y a dónde queremos llegar.

6 comentarios sobre “¿Soy un dinosauRio? Sobre las novedades de R

  1. Jesus 16 Mayo, 2017 10:28

    R es el nuevo Perl

  2. Emilio 17 Mayo, 2017 17:30

    ¿<>? Me temo que no soy tan joven como para saberlo.

    Contribuyo con otra perla de la innovación en R. En un curso que impartí recientemente me plantee seriamente no explicar la importación de datos en formato csv (?read.table), ya que los alumnos me dijeron que preferían el golpe de click en un conocido entorno de programación de R que visualmente importa este tipo de datos.

    La expliqué, pero no me hicieron mucho caso: no veían la utilidad de dominar la programación cuando se podía hacer mediante un menú desplegable. Yo les dije que en el entorno de programación de R que uso (una antigualla que se llama emacs y que es de antes de que se creara RStudio) no existen tales botoncitos y que a la larga es mucho mejor prescindir de estas florituras. Me miraron con sonrisa condescendiente y algo mencionaron de que pasara a entornos gráficos, guis y demás avances modernos.

    ¡Bendita, atrevida e ignorante juventud!

  3. Emilio 17 Mayo, 2017 17:31

    ¿Saber qué somos y a dónde queremos llegar? Me temo que no soy tan joven como para saberlo.

  4. Freddy 18 Mayo, 2017 0:46

    Ese cosín %>% es absolutamente contranatural para mí. Es como pensar de izquierda a derecha y no he sido muy diestro en eso de escribir aljamiado…

    Y aprovechando para comentar también sobre lo que dice don Emilio: ¡me he topado con jóvenes que confunden R con RStudio y tienen en santo a H. Wickham y en ignoto absoluto a J. M. Chambers!

  5. Davidi 22 Mayo, 2017 11:53

    Es simplemente evolución de un lenguaje libre. Hay más de 10k paquetes distintos, cada cual desarrolla el suyo pensando que contribuye, algunos lo hacen pensando en que sea fácil de usar y otros en que sea más rápido, entre supongo que otras finalidades. Grandes compañías hacen sus adaptaciones, sus dialectos (que si ORE de Oracle, que si lo que hacía Revolutions, que ahora hace Microsoft, que si h20.ai, que si alteryx, …) en este caso quizás con intenciones de exclusivilidad o peores.

    También pasa con las lenguas, cuando te echas las manos a la cabeza por los nuevo palabros que por populares entran a formar parte del diccionario. Bien pensado, si no hubieran esos cambios quizás muchos seguiriamos hablando latin…

    A alguien que conoce SQL si le enseñas sqldf se sentirá cómodo y productivo, pero sabiendo que dispone de RAM y no usa megaficheros igual lo mejor sería data.table.

    Es como cuando aprendí Java y lo comparaba con C++, y padecía con su “triste” rendimiento. En cualquier caso estuvo dándome de comer unos años. Y se expandido como una plaga, herramientas de big data pensadas para rendimiento se montán sobre el (p.e. Apache Kassandra).

    O al reves, entrado en años me tocó aprender fortran, para manejar computadores de altas prestaciones… así podría leer el randomForest tal y como lo escribiera Breiman. Al final son herramientas para tu caja de herramientas…

    A veces pienso simplemente que es pq hay gente que no sabe hacer otra cosas y si le das otro lenguaje, pues vuelve a repetir lo que sabe hacer.

    Creo que lo bueno es seguir aprendiendo sin olvidar tus “habilidades jurásicas”, nunca sabes cuando esas potentes mandíbulas pueden marcar la diferencia. Todo depende de la industria en la que te quieras mover…

Comenta

Your email address will not be published.

Puedes usar estas etiquetas y atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">