Paquetes

Missing

Dos motivos me han tenido missing estas últimas semanas. Uno es una estancia en la Universidad de Santa Catalina del Burgo de Osma. Oportunamente ubicada en las estribaciones de la muy generosa en caldos de calidad Ribera del Duero, ha sido reconvertida a la sazón en un hotel propicio para la evasión y la agrafía.

vim_package

El segundo es que en horas intempestivas he estado purgando de missings unas matrices enormes y de la, se conoce, mayor trascendencia. Es un asunto delicado, jamás bien resuelto, para el que el paquete [VIM](http://cran.r-project.org/web/packages/VIM/index.html) puede proporcionar ayuda. Sobre todo en los aspectos gráficos.

No hay motivo para no actualizar tu R a la última versión

R

Ayer se publicó la versión 3.1.0 de R. No es gran noticia: aparecen nuevas versiones cada no muchos meses.

No hay motivo para no actualizar. Pero sí para hacerlo: las nuevas versiones corrigen errores en las anteriores y, además, encontrarás poco soporte en los foros para ese R 2.1.5 viejuno que aún mantienes por pereza.

Para quienes usen R en plataformas donde el software no se actualiza automágicamente, existe el paquete installr que permite actualizar la versión de R con menos esfuerzo que antaño haciendo

Veinte paquetes de R para científicos de datos

R

Me llegó recientemente un artículo con una lista de veinte paquetes de R para data scientists. Y no la encuentro afortunada. Voy a agrupar esos veinte paquetes en algunas categorías y añadiré comentarios. La primera de ellas es la de manipulación de datos, tal vez la más amplia, que recoge los siguientes: sqldf, plyr, stringr (para procesar texto), lubridate (para procesar fechas),reshape2 y los paquetes de acceso a bases de datos.

La cosa más friqui que he visto en...

Es la cosa más friqui que he visto en tiempos. “Esto va intravenoso al blog”, me he dicho. Es esto.

Se trata de un paquete de R de Emilio Torres Manzanera con el que se pueden construir gráficos como

al más puro estilo xkcd. Para probarlo,

library(xkcd)
vignette(“xkcd-intro”)

¡Disfrutad!

Gráficos de pares de variables mejorados (con R)

Un gráfico de pares de variables —que no he sabido traducir mejor desde el original inglés pairplot— es algo como lo siguiente:

Ahora es posible construir gráficos de pares más sofisticados e informativos usando el paquete GGally de R. Usando el código (extraído de SAS and R)

library(GGally)

ds <- read.csv("http://www.math.smith.edu/r/data/help.csv")
ds$sex <- as.factor( ifelse(ds$female==1, "female", "male") )
ds$housing <- as.factor( ifelse(ds$homeless==1, "homeless", "housed") )
smallds <- subset(ds, select=c("housing", "sex", "i1", "cesd"))

ggpairs(smallds,
        diag=list(continuous="density", discrete="bar"),
        axisLabels="show")

se obtiene la siguiente versión mejorada:

El paquete reshape de R (I): melt

R

El paquete reshape de R consta esencialmente de dos funciones, melt y cast, muy útiles para determinado tipo de transformaciones de datos.

La función melt se describe sucintamente con el siguiente gráfico:

Es decir, toma un data.frame y lo funde (¡dejaré de ser amigo de quien pronuncie meltea!) o, visto de otra manera, estira.

He aquí unos ejemplos:

library(reshape)
iris.m <- melt(iris)
iris.m

Nótese cómo melt es inteligente y no necesita (en muchas ocasiones) que se le especifiquen cosas evidentes. De hecho, la expresión anterior es equivalente a las siguientes:

Desarrollo de paquetes con R (IV): funciones genéricas

R

La función plot es genérica. Uno puede aplicársela a un data.frame o a un objeto de la clase lm. Y en el fondo, plot sólo elige cuál de sus métodos, es decir, las funciones que realizan el trabajo verdaderamente, aplicar. Para ver cuáles son los métodos asociados a plot basta con ejecutar en R

methods(plot)

La salida es autoexplicativa.

Podemos hacer un pequeño experimento creando una función genérica, foo, bastante tonta:

El paquete pxR, en CRAN

R

El 1 de junio escribí en la lista de ayuda de R en español para ver si alguien se animaba a colaborar en la creación de un paquete de R para importar datos en formato PC-Axis.

Este formato es usado por gran número de institutos estadísticos, entre ellos el INE español, para difundir y publicar datos en formato electrónico. Existe una herramienta gratuita pero cerrada para analizar este tipo de datos, pero clamaba al cielo que los usuarios de R no contásemos con una manera de importarlos directamente. Además, lo necesitaba para un pequeño proyecto (del que hablaré próximamente).

Desarrollo de paquetes con R (III): check, check, check

R

Uno de los pasos más importantes en el desarrollo de un paquete es verificar que funciona correctamente. Un check comprueba la estructura del paquete, la consistencia entre el código y la documentación, que no faltan secciones importantes en esta última, que los ejemplos pueden ejecutarse sin problemas, etc.

De ahí que sirva para muchos propósitos. En particular, si uno elige los ejemplos que acompañan a la documentación de las funciones con buen criterio, éstos servirán no sólo para ilustrar el comportamiento de las funciones sino, también, para verificar el funcionamiento del paquete. Además, de usar R-forge, como el sistema realiza checks en varias plataformas distintas, el elegir bien los ejemplos permite realizar comprobaciones multiplataforma del código.

Paquetes huérfanos de R

R

Ayer hablaba con Juan José Gibaja (al que finalmente conocí en persona) y me contaba cómo había usado un paquete de R —no recuerdo cuál— que misteriosamente había desaparecido de CRAN.

—¡Imposible! Los paquetes no desaparecen: quedan huérfanos.

Efectivamente, en la lista de paquetes de CRAN, abajo, se mencionan los llamados paquetes húerfanos. Según el README, se trata de paquetes cuyos autores o mantenedores

  • han decidido desentenderse del paquete o
  • los mensajes que les envían desde CRAN rebotan o no son contestados.

Tales paquetes pasan al estado ORPHANED y se mantienen en CRAN mientras pasen los checks. Pero, conforme avanzan las versiones de R, puede que algunos de esos paquetes dejen de compilar y entonces son archivados. Existe una lista de paquetes huérfanos archivados cuya última versión puede encontrarse aquí.