[R] seq_len and loops

Duncan Murdoch murdoch.duncan at gmail.com
Sun Dec 22 00:50:13 CET 2013


On 13-12-21 5:57 PM, Göran Broström wrote:
> I was recently reminded on this list that
>
> "Using 1:ncol() is bad practice (seq_len is designed for that purpose)"
> (Ripley)
>
> This triggers the following question: What is "good practice" for
> 2:ncol(x)? (This is not a joke; in a recursive situation it often makes
> sense to perform the calculation for the start value i = 1, then
> continue with a loop over the rest, "the Fortran way";)
>
> I usually use
>
> if (ncol(x) > 1)
>       for (i in 2:ncol(x)){
>          ....
>
> but I can think of
>
> for (i in seq_len(x - 1)){
>       I <- i + 1
>      ....
>
> and
>
> i <- 1
> while (i < ncol(x)){
>       i <- i + 1
>       ....
>
> What is "good practice" (efficient and safe)?

for (i in seq_len(x - 1) + 1)

should be efficient and safe.  A little less efficient, but clearer would be

for (i in seq_len(x)[-1])

Duncan Murdoch



More information about the R-help mailing list