[R] Large loops in R

Charles Novaes de Santana charles.santana at gmail.com
Tue Dec 4 21:15:51 CET 2012


Thank you, Sarah! It is a wonderful new!!! :)

Now I need to solve the other question hehe How to allocate such large matrix :)

best,

Charles

On Tue, Dec 4, 2012 at 8:39 PM, Sarah Goslee <sarah.goslee at gmail.com> wrote:
> Without a reproducible example it's hard to tell for certain, but what
> about simply (assuming nrows2 is actually columns):
>
> sum((mat1/d1 - mat2/d2)^2)
>
> R is smart enough to understand elementwise manipulation of a matrix:
> you shouldn't need a loop at all.
>
> Sarah
>
> On Tue, Dec 4, 2012 at 2:27 PM, Charles Novaes de Santana
> <charles.santana at gmail.com> wrote:
>> Dear Michael,
>>
>> Thank you for your answer.
>>
>> I have 2 matrices. Each position of the matrices is a weight. And I
>> need to calculate the following sum of differences:
>>
>> Considering:
>> mat1 and mat2 - two matrices (each of them 48000 x 48000).
>> d1 and d2 - two constant values.
>>
>> sum<-0;
>> for(i in 1:nrows1){
>>                         for(j in 1:nrows2){
>>                                         sum<-sum+ ( ( (mat1(i,j)/d1) -
>> (mat2(i,j)/d2) )^2 )
>>                                 }
>>                         }
>>                 }
>>
>> I was wondering if there is a better way to do this sum.
>>
>> Thank you for your attention!
>>
>> Best,
>>
>> Charles
>>
>> On Tue, Dec 4, 2012 at 7:54 PM, R. Michael Weylandt
>> <michael.weylandt at gmail.com> <michael.weylandt at gmail.com> wrote:
>>>
>>>
>>> On Dec 4, 2012, at 6:47 PM, Charles Novaes de Santana <charles.santana at gmail.com> wrote:
>>>
>>>> Dear all,
>>>>
>>>> I need to access data from a large matrix (48000 x 48000) and to do it
>>>> I am trying to run two loops using "for" command. Surely it is been a
>>>> very slow job.
>>>>
>>>> I heard that "for" is not the best option to perform large loops in R,
>>>> but I don't really know what would be the best (fast) option. sapply?
>>>> vapply? Could anyone help me with this issue, please?
>>>
>>> What exactly are you trying to do? It's likely doable with a few vectorized operations.
>>>
>>> Michael
>>>
>>>
> --
> Sarah Goslee
> http://www.functionaldiversity.org



-- 
Um axé! :)

--
Charles Novaes de Santana
http://www.imedea.uib-csic.es/~charles
PhD student - Global Change
Laboratorio Internacional de Cambio Global
Department of Global Change Research
Instituto Mediterráneo de Estudios Avanzados(CSIC/UIB)
Calle Miquel Marques 21, 07190
Esporles - Islas Baleares - España

Office phone - +34 971 610 896
Cell phone - +34 660 207 940




More information about the R-help mailing list