R

La función ifelse "a la SAS"

R

Una función muy útil de R es ifelse:

val <- 0
var <- ifelse( val == 1, "uno", "cero" )
print( var )

Un programador en SAS haría algo así como

%macro test(val);
    %if &val=1 %then %let var=one;
    %else %let var=zero;
    %put &var;
%mend;

%test(0);

SAS, sin embargo, recomienda hacerlo así:

%let val=0;
%let var=%sysfunc(ifc(&val=1,one,zero));
%put &var;

Una línea, sí, pero una línea muy críptica. ¡Aunque para gustos están los colores!

Sobre la cuota de mercado mundial de las herramientas analíticas de negocio

R

Hace poco, IDC —una empresa que hace estudios de mercado a nivel global de distintas herramientas de sofware y hardware — hizo público su informe periódico Worldwide Business Intelligence Tools 2009 Vendor Shares. En su página 8, la más jugosa del informe, aparece la tabla que reproduzco a continuación:

Puede apreciarse cómo en el segmento de la minería de datos (que viene a ser a lo que se refieren con lo de advanced analytics) es SAS el claro dominador con IBM/SPSS en una débil segunda posición.

R en Yotube y Facebook

R

Bebilda, que no sé quién es (misterio que me he propuesto resolver pronto) ha arrancado dos proyectos bastante interesantes:

Los tutoriales están francamente bien y los hay sobre temas diversos como análisis ANOVA, el test de Student, estadística descriptiva, creación de histogramas y otros asuntos de estadística básica.

¡A disfrutar! (Y publicitar, claro).

Una tarea para mis lectores

R

Ayer me dieron los resultados de unos análisis de sangre y, contra todo pronóstico, la médica me dijo que tengo el colesterol bajo control. ¡Con razón —me dije—, si en el blog lo hago yo todo! Así que para mejorar la circulación sanguínea de mis lectores, esta entrada es un ejercicio para quienes me leen. Espero pues que, a pesar de lo vacacional de las fechas, tengan tiempo de completar lo que queda sin hacer y lo hagan constar —antes de que pase lista— en un comentario explicando sus averiguaciones.

Un ilustrador problema de compatibilidad de licencias libres

R

This whole thing is such a nuisance. It seems one can’t even give something away these days!

Así de infeliz se mostraba G. Grothendieck hace unos días. Y es que habíamos enviado una primera versión del paquete rJython que subir a CRAN y nos encontramos con problemas de licencias.

Eso de las licencias de software es un tema enojoso. Importante, pero enojoso.

Además, da la impresión, que totalmente exótico a la ética y costumbres de este país desde el que escribo: algún día, como divertimento, contaré alguna historieta. Y cuando haya vencido la fecha de prescripción, la más divertida, la más ilustradora del fenómeno, la sin par: la del código con copyright de EverisWaterhouseCoopers.

Un curioso bug de R

R

A vueltas con los bugs, el otro día leí sobre uno bastante curioso de R. En resumen:

> a <- c(1,2, sqrt( 2) ^ 2 )
> table(a)
a
1 2
1 2
> unique(a)
[1] 1 2 2

¿El motivo? La función unique compara el valor numérico de los valores del vector de manera que le afectan los errores de redondeo. Sin embargo, la función table compara los valores de acuerdo con su representación como cadena de caracteres.

> 2 - sqrt(2) ^ 2
[1] -4.4409e-16
> as.character(c(2, sqrt(2)^2))
[1] "2" "2"

Los entusiastas de R pueden comprobar todo lo anterior examinando (¡que es una buena costumbre!) el código de ambas funciones.

rJython: un nuevo paquete para llamar a Python desde R

R

Ya está disponible el paquete rJython que permite llamar a Python desde R. Aunque todavía no se ha subido a CRAN, puede instalarse así:

install.packages("rJython", repos="http://R-Forge.R-project.org")

Una vez instalado puede probarse el paquete ejecutando, por ejemplo,

rJython <- rJython()
a <- 1:4
jython.assign(rJython, "a", a)
jython.exec(rJython, "b = len( a )")
jython.get(rJython, "b")
rJython$exec("import math")
jython.get(rJython, "math.pi")
jython.call(rJython, "len", 1:3)
b <- 5:8
rJython$exec("def concat(a,b): return a+b")
jython.call(rJython, "concat", a, b)

Arquitectura: Jython y rJava

El paquete no está basado en el habitual Cpython sino en Jython, un intérprete de Python desarrollado en Java. El motivo es doble:

Gráficos en R con símbolos arbitrarios: código, comentarios y fin

R

Prometí el otro día revelar los secretos (pensaba que no lo eran tanto) del gráfico que mostré en esta entrada. Los impacientes tienen aquí todo lo que necesitan. Tienen que ejecutar primero el guión svg2ps.sh que invoca inkscape para transformar los ficheros svg (incluidos en la descarga) de las banderas (obtenidos de la Wikipedia) en ficheros postscript.

El programa src.R genera entonces el gráfico utilizando dos paquetes de R: grImport y lattice. El primero permite convertir postscript en xml y posteriormente en objetos de la clase picture.

Los "mejores" paquetes de R (II): análisis anual de la red social de los participantes en r-help

R

Hace un tiempo comencé una serie de entradas, que serán finalmente tres, sobre los “mejores” paquetes de R. Esta va a ser la segunda entrega. Siento haber tardado tanto en realizarla: quienes me conocen saben que ocioso no he permanecido. De mis actividades de este periodo daré cumplida cuenta en entradas subsiguientes.

Tengo que añadir también como preámbulo que ha sido una conversación sobre análisis de redes sociales con un ex-compañero muy ducho en apropiarse de contraseñas ajenas la que me ha empujado finalmente a ahondar este estudio que tenía, junto a tantos, postergado en una esquina de mi disco duro.

useR! 2010

Mientras en España no sabemos aún qué pasa con las II Jornadas de Usuarios de R (de hecho, ni siquiera se han corregido las faltas de ortografía de la página de internet de las primeras), las useR! 2010 marchan a todo trapo: en Gaithersburg, Maryland, los días del 20 al 23 de julio no va a faltar ni rms.

No va faltar una charla a cuenta de la empresa a la que otras debieran parecerse. Habrá que tener a mano el enlace  para cuando uno de los habituales cretinos encorbatados nos vuelva a espetar eso de pero R es una cosa como tan de… universidad…

Gráficos en R con símbolos arbitrarios

R

Hace no mucho, en un blog hermano, se habló de cómo podían utilizarse símbolos distintos en los gráficos de R. También hablé yo de funcionarios y renta per cápita.

Ahora combino ambas entradas y algo más de mi cosecha para mostrar un gráfico hecho con R utilizando símbolos arbitrarios (las banderas de cada país).

El secreto de cómo lo he hecho (y el código completo, claro) lo revelaré la semana que viene. Entre tanto, ¿a alguno de mis lectores se le ocurre cómo pudo haberse hecho?

Algoritmos genéticos para la caracterización de máximos en random forests

R

En minería de datos se buscan modelos que permitan hacer predicciones acerca del comportamiento de los sujetos del estudio. Pero, típicamente, cuanto más complejas son las técnicas, menos intuición ofrecen acerca del porqué de la predicción, pierden inteligibilidad. Existe una omnipresente tensión entre inteligibilidad (una propiedad altamente deseable, incluso, en ocasiones, por requisito legal) y precisión.

Un modelo puede resumir mejor o peor una colección enorme de observaciones, pero en ocasiones los mismos modelos son demasiado complejos o herméticos como para ofrecer una interpretación plausible de los datos: ¿qué caracteriza a las observaciones para las que mi modelo predice los valores más altos (o bajos)?

Agregador de noticias sobre R en español

R

Me es grato anunciar que está disponible (una versión beta de) un agregador de noticias sobre R en español. Ha sido desarrollado con el objetivo de proporcionar a la comunidad de usuarios un punto de acceso único a cuantas noticias sobre R se publiquen en la blogosfera en español. Es equivalente a su versión en inglés.

También está disponible como RSS.

Contenido agregable

Actualmente, el motor de agregación lista entradas en blogs que: