Mr Ripley,

May I ask why seq_len() and seq_along() are better than seq()?

Thanks,
Ivan

Le 1/25/2011 09:58, Prof Brian Ripley a écrit :
On Tue, 25 Jan 2011, Petr Savicky wrote:

On Mon, Jan 24, 2011 at 11:18:35PM +0100, Roy Mathew wrote:
Thanks for the reply Erik, As you mentioned, grouping consecutive elements
of 'a' was my idea.
I am unaware of any R'ish way to do it. It would be nice if someone in the
community knows this.

The error resulting in the NA was pretty easy to fix, and my loop works, but
the results are still wrong (new script below).
Ideally it should print single "hello" for the single letters and grouped '3
hellos' for the fives, grouped '2 hellos' for the sixes etc.

Based on the run results, if the value of n is being tracked, it changes
quite unpredictably.
Can someone explain how the value of n changes from end of the loop to the
top without anything being done to it?

Hi.

A for-loop in R is different from a for-loop in C. It is similar
to foreach loop in Perl. If v is a vector, then

 for (n in v)

first creates the vector v and then always performs length(v) iterations.
Before iteration i, n is assigned v[i] even if n is changed in the
previous iteration.

And also if v is changed during the loop.

If you want to control the loop variable during execution, it is possible to use a while loop, where you have full control. While loop may be better
also if v has a very large length, since, for example

 for (n in 1:1000000)

creates a vector of length 1000000 in memory.

It should also be noted that the for-loop

 for (n in 1:k)

performs 2 iterations, if k is 0, since 1:0 is a vector of length 2.
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.

Hope this helps.

Petr Savicky.


--
Ivan CALANDRA
PhD Student
University of Hamburg
Biozentrum Grindel und Zoologisches Museum
Abt. Säugetiere
Martin-Luther-King-Platz 3
D-20146 Hamburg, GERMANY
+49(0)40 42838 6231
ivan.calan...@uni-hamburg.de

**********
http://www.for771.uni-bonn.de
http://webapp5.rrz.uni-hamburg.de/mammals/eng/1525_8_1.php

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to