[R] crazy loop error.

Petr Savicky savicky at praha1.ff.cuni.cz
Wed Jan 26 09:18:26 CET 2011


On Tue, Jan 25, 2011 at 08:58:31AM +0000, Prof Brian Ripley wrote:
[...]
> >If k may be 0, then it is better to use
> >
> > for (n in seq(length=k))
> >
> >since seq(length=0) has length 0.
> 
> Since you keep mentioning that, it is actually much better to use 
> seq_len(k) (and seq_along(x) instead of your earlier recommendation of 
> seq(along=x)).  And if you are using seq() in other cases in programs, 
> consider seq.int() instead.

Thank you for pointing out the functions seq_len(), seq_along() and
seq.int(). These functions are primitive and faster, as others already
mentioned. Using replicate(), i obtained on my computer a speed up by a
factor between 5 and 7 for k <= 20 and there is a remarkable speed up
also for larger k. The function seq.int() is more general than the other
two. In particular, it can generate also a decreasing sequence.

Petr Savicky.



More information about the R-help mailing list