[R] apply, apply speed vs. traditional looping mechanisms
Prof Brian Ripley
ripley at stats.ox.ac.uk
Sun May 14 22:26:26 CEST 2006
On Sun, 14 May 2006, John Sorkin wrote:
> Can someone tell me why apply (and apply) are faster in performing
> repeated operations than a for (or do) loop? I am looking for a
> technical explanation.
apply() is just a wrapper for a for loop. So it is not faster that at
least one implementation using a for loop: it may be neater and easier to
understand than an explicit for loop.
I don't understand why you used 'apply' twice here.
lapply() can be faster than a carefully crafted for() loop (since C-level
code is more efficient in memory allocation), but its main rationale is
clarity (and especially to avoid traps like
ans <- vector("list", n)
for(i in 1:n) ans[[i]] <- fun(i)
if n turns out to be zero or fun(i) to be NULL).
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list