[R] seq_len and loops

Duncan Murdoch murdoch.duncan at gmail.com
Sun Dec 22 00:51:44 CET 2013


On 13-12-21 6:50 PM, Duncan Murdoch wrote:
> 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.

Oops, not safe when x is 0.

 >
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