[R] For Loop performance
Uwe Ligges
ligges at statistik.tu-dortmund.de
Sun Jan 13 20:03:47 CET 2008
mcoyne at boninc.com wrote:
> WRT: Say length(V1) is n, do you want to compare
>> v1[1] with v2[1] and v2[2] and v1[2] with v2[3] and v2[4]
>> or
>> v1[1] with v2[1] and v2[n+1] and v1[2] with v2[2] and v2[n+2]
>
> v1[1] with (v2[1] and v2[2])
> v1[2] with (v2[3] and v2[4])
> v1[3] with (v2[5] and v2[6])
> ....
> ...
> v1[n] with (v2[n+1] and v2[n+2])
So you end up with all comparisons by:
v2m <- matrix(v2, ncol=2, byrow=TRUE)
logical_result <- (v1 == v2m[,1]) & (v1 == v2m[,2])
Now you can (1) apply vectorized statements (e.g. using ifelse()) OR (if
1 is impossible) (2):
for (I in which(logical_result)) {
statement_1
statement_2
}
Uwe Ligges
> I hope this is clear (I think I was wrong in the snippet of code earlier).
> Thanks in advance.
>
> --MyC
>
>>
>> My Coyne wrote:
>>> Hello,
>>>
>>>
>>>
>>> Newbie question and hope you can help .
>>>
>>> I have two vector V1 and V2, where length(V2) = length of (V1) * 2;
>>> length(V1) ~ 16,000.
>>>
>>> For each member in V1, I need to compare 2 element of V2 for equality
>>
>> If just the comparison is concerned, you can do it in vectorized form,
>> but I am not sure of you want to comapre v1[i] with v2[i] and v2[i+1],
>> otherwise it would not make sense that length(V2) = length of (V1) * 2
>> ...
>>
>> Say length(V1) is n, do you want to compare
>>
>> v1[1] with v2[1] and v2[2] and v1[2] with v2[3] and v2[4]
>> or
>> v1[1] with v2[1] and v2[n+1] and v1[2] with v2[2] and v2[n+2]
>>
>> ???
>>
>> Uwe Ligges
>>
>>
>>
>>
>>
>>
>>>
>>> i.e.
>>>
>>> for (I in 1:length (V1)) {
>>>
>>> if ( v2[i] == v1[i] & v2[i+1]==v1[i] ){
>>>
>>> statement_1
>>>
>>> statement_2
>>>
>>> .
>>>
>>> }
>>>
>>> }
>>>
>>>
>>>
>>> This for-loop is too slow (it takes a good 5 minutes on my Windows
>>> machine)
>>> to finish processing the vector V1 of 16,000; I will need to process a
>>> lot
>>> more than 16,000 (about 300*16,000).
>>>
>>>
>>>
>>> Is there a better way to do looping with R? Any help is greatly
>>> appreciate
>>>
>>>
>>>
>>> --MyC.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> 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