¿Puedo cambiar mi código retroactivamente?

La verdad, me gustaría, Me gustaría volver atrás y modificar algunas docenas de código en R que malescribí como un diletante por no estar al tanto de una función de R cuya verdadera utilidad descubrí recientemente (gracias le sean dadas, de nuevo, a Jorge Iván Vélez).

La verdad, no tengo excusa. Incluso se habló de ella en nuestro blog hermano.

Y es que nunca me había percatado de la potencia de la función mapply. He aquí el problema: se tienen dos listas de la misma longitud y se quieren transformar los objetos de la primera en función de datos extraídos de los objetos correspondientes de la segunda. En los tiempos oscuros que duraron hasta anteayer, me veía abocado a utilizar un bucle que llevase la contabilidad del índice para poder recorrer ambas listas simultáneamente:

salida <- list()
for( i in 1:length(lista1) ){
   salida <- c( salida, haz.algo.con( lista1[[ i ]], lista2[[ i ]] )
}

Ese horrendo pecado contra las más elementales reglas de la estética lo he cometido yo en más de una ocasión. Mea culpa. Como lo feo tiene que ser necesariamente incorrecto, dejaré que sea el mismo Jorge Iván el que nos muestre cómo hacerlo correctamente. Puede verse aquí. Todo un placer para quienes creemos que el código también puede ser poesía.

¿Cómo haré para retroactivamente corregir todo ese mal código que he ido dejando por ahí?

2 comentarios sobre “¿Puedo cambiar mi código retroactivamente?

  1. Enrique 30 marzo, 2010 0:44

    Imperdonable. Estás hablando de las famosas funciones map y reduce.

    Historicamente fué Lisp su creador. Más tarde copiadas por el resto de lenguajes.

    Algunos lenguajes como Python las acompañan con útiles utilidades como zip (http://docs.python.org/library/functions.html).

    Si te aburres prueba a implementarlo en C. Te doy una pista:
    http://library.gnome.org/devel/glib/2.24/glib-Doubly-Linked-Lists.html#g-list-foreach

    Y más moderno todavía es utilizar generators y continuators.

    Postdata:
    Me hubiese gustado conocer a Elvis. Tenía tantas cosas que enseñarle.

  2. Enrique 30 marzo, 2010 1:31

    Despues de leer detenidamente tu comentario y mi respuesta … me pregunto… cómo se pueden borrar comentarios… Este Elvis no tenía ni p… idea.

Los comentarios están desabilitados.