[R] [External] Re: Speeding up a loop

Rui Barradas ruipbarradas at sapo.pt
Tue Jul 24 14:09:04 CEST 2012


Hello,

Are you sure? With a matirx composed of those two rows only I had a 
problem, the function to.keep() returned NULL. See the changes made to 
avoid it.

# beginning of loop
     for(i in seq_len(nrow(x))){
         #yes <- x[i, 1] > a1 | x[i, 2] > a2 | x[i, 3] < a3 | x[i, 4] > a4
         #if(all(yes)) keep(i, e)
         # Original post, do NOT remove if equal
         #no <- x[i, 1] < a1 | x[i, 2] < a2 | x[i, 3] > a3 | x[i, 4] < a4
         # Changed to remove if equal
         no <- x[i, 1] <= a1 | x[i, 2] <= a2 | x[i, 3] >= a3 | x[i, 4] <= a4
         if(all(!no)) keep(i, e)
     }
     if(e$ires == 0 && nrow(x) > 0)
         x[1, ]
     else
         e$result[seq_len(e$ires), 1:nc]
# end of function


Em 23-07-2012 18:18, Reith, William [USA] escreveu:
> It looks like both ways produce the same result.
>
> -----Original Message-----
> From: Rui Barradas [mailto:ruipbarradas at sapo.pt]
> Sent: Monday, July 23, 2012 1:05 PM
> To: Reith, William [USA]
> Subject: Re: [External] Re: [R] Speeding up a loop
>
> Hello,
>
> But that's the negation of '<', so try to negate '<=', meaning, remove the equal signs. Sorry if I wasn't very clear.
>
> Rui Barradas
>
> Em 23-07-2012 17:44, Reith, William [USA] escreveu:
>> This is what I have for the yes for loop
>>
>> for(i in seq_len(nrow(x))){
>>       yes <- x[i, 1] >= a1 | x[i, 2] >= a2 | x[i, 3] <= a3 | x[i, 4]>= a4
>>       if(all(yes)) keep(i, e)
>>     }
>>
>> -----Original Message-----
>> From: Rui Barradas [mailto:ruipbarradas at sapo.pt]
>> Sent: Monday, July 23, 2012 12:14 PM
>> To: Reith, William [USA]
>> Cc: r-help
>> Subject: [External] Re: [R] Speeding up a loop
>>
>> Hello,
>>
>> I think this is a boundary issue. In your op you've said "less" not "less than or equal to".
>> Try using "<=" and ">=" to see what happens, I bet it solves it.
>>
>> Rui Barradas
>>
>> Em 23-07-2012 14:43, wwreith escreveu:
>>> 1.15           60	0.553555415         0.574892872
>>> 1.15	   60	0.563183983         0.564029359
>>>
>>> Shouldn't the function row out the second one, since it it higher in
>>> position 3 and lower in position 4 i.e. it should not all be yes?
>>>
>>>
>>>
>>>
>>>
>>> --
>>> View this message in context:
>>> http://r.789695.n4.nabble.com/Speeding-up-a-loop-tp4637201p4637438.ht
>>> m l Sent from the R help mailing list archive at Nabble.com.
>>>
>>> ______________________________________________
>>> 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