Dependencias funcionales en R con foodweb

El otro día tropecé con un problema de rendimiento con R y al utilizar Rprof() encontré muchas llamadas a funciones que yo no hacía directamente. La principal sospechosa era la función daply (del paquete plyr) que parecía depender de bastantes otras. Uno puede navegar el código de las funciones para identificar esas dependencias, pero, mirad qué maravilla: library(mvbutils) library(plyr) foodweb(find.funs("package:plyr"), prune = "laply") genera Ahí se ve la dependencia de daply con respecto a laply. Y uno adquiere, además, una visión panorámica del paquete plyr. ...

8 de mayo de 2013 · Carlos J. Gil Bellosta

data.table (I): cruces

Los protagonistas (tres tablas grandecitas): dim(qjilm) # [1] 3218575 5 dim(tf) # [1] 6340091 7 dim(tfe) #[1] 1493772 3 head(qjilm, 2) #pos.es length.en length.es pos.en qjilm #1 1 2 1 1 0.8890203 #2 1 2 1 2 0.1109797 head(tf, 2) #frase es pos.es length.es en pos.en length.en #1 996 ! 42 42 ! 43 44 #2 1231 ! 37 37 ! 37 38 head(tfe, 2) #en es tfe #1 ! ! 4.364360e-01 #2 ! !" 4.945229e-24 El objetivo (cruzarlas por los campos comunes): ...

2 de mayo de 2013 · Carlos J. Gil Bellosta

Por qué no deberías compartir tu código: diez motivos

Fresco aún en nuestro recuerdo el fiasco de Excel del que nos ocupamos hace unos días, los partidarios de la reproducibilidad, el software subversivo y gratuito, los detractores de las herramientas propietarias y otras estirpes han agudizado su campaña en pro de lo que denominan una mayor transparencia en el proceso de creación científica. Como contrapeso a tanto despropósito, traigo a la consideración de mis lectores una visión alternativa que desnuda los desatinos de la caterva y recoge diez motivos incontestables por los que compartir código es una sinrazón. Es obra de Randall J. LeVeque que puede ser consultada como artículo o, para los impacientes, como presentación.

30 de abril de 2013 · Carlos J. Gil Bellosta

textConnection y ficheros anónimos: cuestión de rendimiento

La función textConnection de R es útil para leer el contenido de una variable como si fuese un fichero de texto. Verbigracia, zz <- textConnection(LETTERS) readLines(zz, 2) Pero cuando uno hace ?textConnection y lee con detenimiento, encuentra la siguiente nota: As output text connections keep the character vector up to date line-by-line, they are relatively expensive to use, and it is often better to use an anonymous file() connection to collect output. Vamos, que desaconseja usar dicha función por motivos de rendimiento cuando no vayan a usarse todas las sus características de las que file carece. Pero, ¿será cierto que el rendimiento es tan malo? Y de serlo, ¿cómo usar file? ...

4 de abril de 2013 · Carlos J. Gil Bellosta

Cortar una cadena por un caracter solo cuando no forme parte de una subcadena entrecomillada

Algunos usuarios del paquete pxR han avisado de un error de implementación. Según las especificaciones del formato de datos PC-Axis, las líneas de ese tipo de ficheros acaban en punto y coma (y no necesariamente en un salto de línea). Así que era natural leer los ficheros íntegramente, concatenar sus líneas físicas y luego partirlas usando strsplit para obtener las líneas lógicas. Sin embargo, ciertos ficheros contienen descripciones (entrecomilladas) que contienen puntos y comas. Y eso produce caos. ...

4 de marzo de 2013 · Carlos J. Gil Bellosta

Infografía sobre Big Data Spain

Rubén Martínez, viejo conocido (fue instrumental en la organización del concurso de análisis de datos de las III Jornadas de Usuarios de R) me ha hecho llegar la siguiente infografía sobre el estado del mundo de los grandes datos (big data) y, en particular, sobre las conferencias Big Data Spain en cuya organización colaboró. Es la siguiente (hay que hacer clic en ella para verla en tamaño completo): Esperemos que el año que viene no coincida con las jornadas de R y podamos compatibilizar ambas…

18 de diciembre de 2012 · Carlos J. Gil Bellosta

Disponibles los vídeos de las sesiones de BigDataSpain

Ya están disponibles los vídeos de las sesiones de la conferencia BigDataSpain que anunciamos hace un tiempo en estas páginas. http://www.youtube.com/watch?v=7efDRf4q3lk

5 de diciembre de 2012 · Carlos J. Gil Bellosta

MapReduce con mincedmeat

Hace unos días implementé un proceso MapReduce usando mincedmeat, un pequeño entorno en Python para desarrollar este tipo de procesos distribuidos. El código y los datos pueden descargarse de este enlace. Los datos de partida están en 249 ficheros de unos 25kb que contienen filas del tipo journals/algorithmica/HarelS98:::David Harel::Meir Sardas:::An Algorithm for Straight-Line of Planar Graphs es decir, publicación, autor (o autores) separados por :: y título de la publicación. Los tres campos están separados por :::. ...

7 de noviembre de 2012 · Carlos J. Gil Bellosta

Predicciones de series temporales a gran escala y en paralelo con R

En el artículo Large-Scale Parallel Statistical Forecasting Computations in R encontrarán los interesados información sobre cómo está usando Google R para realizar predicciones de series temporales a gran escala usando cálculos en paralelo. El artículo tiene dos partes diferenciadas. Por un lado está la que describe los métodos que usan para realizar predicciones sobre series temporales. Parecen sentir cierto desdén por la teoría clásica, comprensible dado el gran número de series temporales que tratan de predecir y el mimo —entiéndase como uso de materia gris— que exige aquella. Prefieren un proceso en el que el coste sea esencialmente computacional: construir predicciones usando gran número de modelos distintos y promediándolos después para obtener resultados que, aunque lejos del óptimo para cada caso particular, resultan adecuados para su fin. ...

25 de septiembre de 2012 · Carlos J. Gil Bellosta

El algoritmo PSLQ e identificación de números

El algoritmo PSLQ se usa para resolver aproximadamente ecuaciones con coeficientes enteros $a_i$ de la forma $$ \sum_i a_i x_i = 0$$ donde, obviamente, no todos los $a_i$ son cero. Aproximadamente significa que la solución se busca dentro de un cierto nivel de tolerancia. No existe, que yo sepa, una implementación en R. Pero sí en Python, usando librerías que permiten utilizar números de precisión arbitraria, como [mpmath](https://code.google.com/p/mpmath/). Veamos un ejemplo: ...

17 de septiembre de 2012 · Carlos J. Gil Bellosta