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

10 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. f 19 Mayo, 2017 10:26

    es que esta el que necesita analizar datos y por consiguiente tiene que saber como hacer las cosas, y el que tiene que poner 4 graficos bonitos en una web y usa lo que haya por defecto

  6. 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…

  7. Iñaki 24 Mayo, 2017 11:47

    Varias cosas:

    De acuerdo con el autor en que primero el lenguaje básico y después los añadidos.
    Nada de acuerdo en que llegó para solucionar problemas que no había. Supongo que te refieres a “las cosas que se pueden hacer” con la herramienta, pero es que “lo usable que es” la herramienta es un problema más. Y en eso dplyr es una maravilla en mi opinión. Particularmente, el group_by para mí es gloria comparado con todas las demás alternativas, en base R u otros paquetes.
    Poco o nada de acuerdo en llamar a los pipes “azúcar” sintáctico. La sintaxis muchas veces condiciona la manera de pensar sobre los problemas, y hay sintaxis mejores y peores para unos problemas u otros. El hecho de poder hacer algo como el pipe en R nos da una riqueza de posibilidades que otros lenguajes no pueden tener.
    Otra cosa es pasar a usar solo el pipe, o enseñar solo dplyr, que, como decía antes, en eso no estoy de acuerdo en absoluto.
    @Freddy: No es cuestión de irse de un extremo al otro, pero no se puede ignorar tampoco que el llamado “hadleyverse” ha incrementado mucho la popularidad de R, hasta el punto en que nos encontramos a otros lenguajes copiando lo que se hace en R. A día de hoy, Wickham (y Eddelbuettel) es una figura clave de R.
    En lo anterior me refiero a ggplot2, por supuesto. Para hacer gráficas en base R, las hago en gnuplot.

    Por último, hay quien carga contra el pipe porque hace muchas cosas entre bambalinas que complican mucho el debugging cuando hay un problema, y tienen razón (yo mismo lo he sufrido recientemente), pero para mí las ganancias superan los problemas.

    Por otro lado, hay quien lo critica por “antinatural” o acudiendo argumentos tipo “los viejunos lo hemos hecho toda la vida de tal forma”. Esto último me hace especial gracia, porque nos olvidamos de que el pipe es lo más viejo, potente e intuitivo del mundo para el que está acostumbrado a una terminal Unix, a encadenar awks, seds, pastes, sorts y demás, aderezado con parallel y acabando en… gnuplot.

  8. Iñaki 24 Mayo, 2017 11:48

    WordPress se comió mi lista de bullets…

  9. Carlos J. Gil Bellosta 26 Mayo, 2017 0:59

    Problemas que ya no había: por ejemplo, ya que mencionas el group by, para cuando llegó dplyr, ya llevábamos tiempo usando o plyr o data.table. Lo hacíamos y lo hacíamos bien. El problema estaba solucionado. Entonces llegó dplyr. Una manera más de hacer lo mismo.

    El azúcar sintáctico tiene su utilidad, obviamente. No lo negaré. Habrá gente que prefiera escribir exp(pi * i) + 1 = 0. Otros, (pi * i) %>% exp + 1 = 0. Pues bien también. Todo por la legibilidad.

Los comentarios están desabilitados.