[R] seq_len and loops
Göran Broström
goran.brostrom at umu.se
Wed Jan 1 01:09:50 CET 2014
Thanks for the answers from Duncan, Bill, Gabor, and Henrik. You
convinced me that
1. The solution
if (x > 1){
for (x in 2:x){
...
is the easiest, most effective, and most easy-to-understand.
2. However, Bill (and Henrik) raised the question of replacing '1' with
'1L'; I understand the meaning of that, but does it matter (in practice)?
3. Noone commented upon
i <- 1
while (i < x){
i <- i + 1
...
}
I suppose that it means that it is the best solution.
Thanks, and Happy New Year 2014!
Göran
On 12/22/2013 06:57 PM, William Dunlap wrote:
>>> for (i in seq_len(x - 1) + 1)
>>>
>>> should be efficient and safe.
>>
>> Oops, not safe when x is 0.
>
> Also, the '+ 1' should be '+ 1L' to get the same answer as
> seq_len(x)[-1].
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>
>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
>> Of Duncan Murdoch
>> Sent: Saturday, December 21, 2013 3:52 PM
>> To: Göran Broström; R-help at r-project.org
>> Subject: Re: [R] seq_len and loops
>>
>> 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
>>>
>>
>> ______________________________________________
>> R-help at 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.
More information about the R-help
mailing list