Hola, ¿qué tal?

Sobre

Por cierto, aprovecho para lanzar esta consulta: recientemente he leído que
> en las versiones recientes de R (no sé a partir de cuál) el rendimiento de
> apply y for se aproximan, con lo cual la tendencia es la de que cada vez
> "compense" menos el usar apply. ¿Es correcto ésto?.
>

 tengo una puntualización. Richard A. Becker, en su artículo "A Brief
History of S", dice (refiriéndose a S alrededor del año 1980):

"As users began to use S for larger problems, it became apparent that the
implicit looping that S used (iterating over all elements of a vector), was
unable to handle every problem. It was necessary to add explicit looping
constructs to the language. We did so with a general for expression:

for(index in values) expression

where the index variable would take on the series of values in turn, each
time executing the expression. Since one very common use of for loops was
to iterate over the rows or columns of a matrix, the apply function was
introduced. This function takes a matrix and the name of a function and
applies that function in turn to each of the rows or columns of the matrix
(or to general slices of an array) and does not require an explicit loop.
We were able to implement apply so that the implicit looping was done with
much greater efficiency than could be achieved by a loop in the S language."

Y ha sido así hasta no hace tanto. Y es una idea que aún colea.
Actualmente, sin embargo,

> system.time( for(i in 1:10000) a <- runif(i))
   user  system elapsed
  2.461   0.028   2.491
> system.time( sapply(1:10000, function(x) a <- runif(x)) )
   user  system elapsed
  2.976   0.020   3.000

Como puede comprobarse, no hay nada intrínsecamente ralentizador en el for.
Eso sí, hay miles de maneras de dispararse en el pie con esos bucles. De
hecho, yo apenas los uso. Y el principal motivo es que no veo natural tener
que llevar la contabilidad de las iteraciones o encargarme de compilar el
objeto de salida. Prefiero delegar esas tareas en funciones de más alto
nivel.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com

	[[alternative HTML version deleted]]

