[R] distance between two matrices
Prof Brian Ripley
ripley at stats.ox.ac.uk
Wed Jan 28 18:50:13 CET 2004
On Wed, 28 Jan 2004, "Hüsing, Johannes" wrote:
> > From: Prof Brian Ripley [mailto:ripley at stats.ox.ac.uk]
> > On Wed, 28 Jan 2004, "Hüsing, Johannes" wrote:
> > > ?apply for more info. You'll want to know about apply if
> > > you want to avoid loops (which is a good approach).
> >
> > Unfortunately apply() is a wrapper for a for() loop, so will
> > not help much
> > (if at all).
>
> whoops; so is the choice between both a matter of style? Or is
> it implementation-specific for R, and not generally true for S?
It is not generally true for S. The case studies in chapter 7 of `S
Programming' show that efficient ways are implementation-dependent.
In some versions of S-PLUS (e.g. 3.4) apply was much faster and in some
(5.0) it was much slower. Using lapply() (which has a C-level loop) is
sometimes rather faster in R.
In this particular example garbage collection is taking about 50% of time
of the pure R solution, so exactly what is done in what order can matter.
knn1 is 20-30x faster since it works in place with space allocated just
once.
--
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