format( "www.R-project.org", year = 2015)

Tal fue el asunto del correo en el que Martin Maechler anunció el lavado de cara de la página de R acontecido hace unos pocos días. Es muy revelador el argumento year = 2015: los usuarios de hoy en día ya no toleramos caóticas yuxtaposiciones de cualquier cosa que algunos llaman páginas de internet. Los usuarios de hoy en día no tenemos tiempo de buscar y rebuscar. Nos molestan los tropezones. Nos molesta la complejidad innecesaria. ...

11 de marzo de 2015 · Carlos J. Gil Bellosta

¿Cuál es la "mejor" manera de ordenar un dataframe?

El título de esta entrada es una pregunta honesta. Yo siempre he utilizado order así: iris[order(iris$Petal.Length),] Y para ordenar por dos (o más columnas), así: iris[order(iris$Petal.Length, iris$Petal.Width),] Es a lo que estoy acostumbrado. Sin embargo, la construcción anterior desconcierta a quienes dan sus primeros pasos en R. dplyr dispone de la función arrange con una sintaxis un tanto más natural: library(dplyr) arrange(iris, Petal.Length, Petal.Width) pero, de nuevo, puede resultar desconcertante tener que recurrir a paquetes avanzados: ¿es conveniente introducir a los principiantes en el proceloso mundo de los paquetes para la simple y muy natural operación de ordenar un dataframe? ...

6 de marzo de 2015 · Carlos J. Gil Bellosta

Todos contra todos

¿Cómo se suman los cuadrados de un vector de números en un paradigma tradicional de programación? Se crea un bucle que lo recorre y que guarda las sumas parciales en un acumulador. Sumamente económico en términos de memoria: apenas consume unos pocos bytes en la pila. La versión funcional de la cosa se parece más a sum(x^2), que implica generar un vector de cuadrados y dilapidar memoria. Así las cosas, en C uno tiende a recorrer y construir resultados parciales. R invita a crear estructuras de datos preprocesados y aplicar sobre ellas funciones resumen. Map y reduce, si se quiere. ...

25 de febrero de 2015 · Carlos J. Gil Bellosta

Curso de presencial y gratuito en Madrid (mío, para más señas)

Voy a impartir un curso básico de R en Madrid. El curso es presencial (no habrá vídeo, retransmisión en streaming ni similares), gratuito (aunque mira las letra pequeña del final) no reglado, por lo que no se experidirán certificados, ANECAs o papeles de ningún tipo. Se trata de un curso de introducción a R desde cero en cuatro sesiones de tres horas los martes (24 de febrero y 3, 10 y 17 de marzo) de 18:00 a 21:00. El programa de las sesiones es: ...

16 de febrero de 2015 · Carlos J. Gil Bellosta

Recurrencia recurrente

Pregunta Antonio Sánchez Chinchón cómo mejorar la parte menos vistosa e imaginativa de esto, es decir, el código. Él, y muchos diríamos que correctamente, autocritica el uso de eval + parse para plagar el namespace de funciones. La respuesta está en la recurrencia. He aquí mi versión del código: library(ggplot2) library(gridExtra) nrows <- 6 coefs.a <- runif(min=1, max=50, nrows) coefs.b <- runif(min=1, max=50, nrows) foo.a <- sample(c(sin, cos), nrows, replace = TRUE) foo.b <- sample(c(sin, cos), nrows, replace = TRUE) foo <- function(x, a, b){ if(a == 1 || b == 1) return(foo.a[[a]](coefs.a[a] * x)) if(b == a) return(foo.b[[a]](coefs.b[a] * x)) foo(x, a-1, b) + foo(x, a-1, b-1) } vplayout = function(x, y) viewport(layout.pos.row = x, layout.pos.col = y) opts=theme(legend.position="none", panel.background = element_rect(fill="gray95"), plot.background = element_rect(fill="gray95", colour="gray95"), panel.grid = element_blank(), axis.ticks=element_blank(), axis.title=element_blank(), axis.text =element_blank()) grid.newpage() jpeg(file="AddingWaves.jpeg", width = 1800, height = 1000, bg = "gray95", quality = 100) pushViewport(viewport(layout = grid.layout(nrows, 2*nrows-1))) for (i in 1:nrows) { for (j in 1:i) { print(ggplot(data.frame(x = c(0, 20)), aes(x)) + stat_function(fun = function(x) foo(x, i, j), colour = "black", alpha=.75)+opts, vp = vplayout(i, nrows+(2*j-(i+1)))) } } dev.off() El resultado es ...

11 de febrero de 2015 · Carlos J. Gil Bellosta

Ejercicios de mi clase de R

Ya conté que participo (como profesor) en el Experto en Data Science de la U-tad. Voy a copiar aquí los ejercicios que propuse en la asignatura de preparación de datos con R. Por si alguien les quiere hincar el diente. En lo que sigue he eliminado algunos detalles que no vienen a cuento. He dejado el resto. Son así: Los ejercicios tienen que resolverse individualmente. No son sencillos: parte de ellos están inspirados en problemas prácticos reales. Por eso puedes ayudarte de cualquier tipo de instrumento (Google, blogs, libros, etc.) que estaría a tu alcance en tu trabajo. Eso sí, en las soluciones que envíes, indica los recursos que utilices y deja clara cuál es tu aportación en cada caso. ...

9 de febrero de 2015 · Carlos J. Gil Bellosta

Romain François (y Francisco Viciana) en el grupo de usuarios de R de Sevilla

Me entero en la página del grupo de usuarios de R de Sevilla de dos cosas: de que Romain François hablará sobre dplyr y de lo que esconde bajo el capó y que Francisco Viciana demostrará el uso del paquete pxR en la próxima reunión del grupo. ¡Quién pudiera asistir!

6 de febrero de 2015 · Carlos J. Gil Bellosta

Parametrización para vagos muy, muy vagos

Un ejemplo sencillo. Tengo un programa que contiene, por ejemplo, una consulta tal que query <- "select * from mitabla where country = 24 and year = 2014" Hay gente sumamente diligente, con una enorme capacidad de trabajo y con vocación de hormiguita que en mil ejecuciones distintas (distinto país, distinto año) del código anterior sería capaz de editar la consulta a mano. Probablemente usando el block de notas. Esa gente, que además suele madrugar mucho, siempre me ha dado cierta envidia. No sé por qué. ...

5 de febrero de 2015 · Carlos J. Gil Bellosta

Entrevista en Principio de Incertidumbre: "big data" sin artificio

El jueves pasado y durante un breve receso de mi gripe, me entrevistaron en Canal Extremadura Radio. Durante una hora larga (que luego hubo que recortar a los 30 minutos que dura el programa de divulgación científica Principio de Incertidumbre) hablé de estadística, big data y R con Jorge Solís Bejarano. A quien tengo que agradecer, primero, que contase conmigo; pero además y sobre todo, lo bien documentado que estuvo (lo cual me lleva a pensar que habrá que estar atentos a otras grabaciones de su programa). ...

4 de febrero de 2015 · Carlos J. Gil Bellosta

La profesionalización de R

Tenía en mente escribir estas líneas desde hace un tiempo. La reciente noticia de la adquisición de Revolution Analytics por parte de Microsoft la ha adelantado, como mucho, unos pocos días. S, el lenguaje del que R es una implementación libre, vivió su ciclo propietario completo: nació en los laboratorios Bell, creció con Insightful, se reprodujo (R fue su vástago) y creo que ha muerto sin pena ni gloria en manos de Tibco. Como casi cualquier otro producto similar. ...

28 de enero de 2015 · Carlos J. Gil Bellosta