[R] Newbie: Matrix indexing

Eric Lecoutre lecoutre at stat.ucl.ac.be
Tue Mar 22 11:43:28 CET 2005


Hi Pascal,

One thing you can do is to work on indexes, count unique occurences and
assign them, as following:

> index <- as.data.frame(table(index[,1],index[,2]))
> index <- do.call("cbind",lapply(index, as.numeric)) # ensures numeric
coding (as table turns into factors)
> occurence[index[,1:2]] <- index[,3]
> occurence
     [,1] [,2]
[1,]    3    0
[2,]    0    0

Eric


Eric Lecoutre
UCL /  Institut de Statistique
Voie du Roman Pays, 20
1348 Louvain-la-Neuve
Belgium

tel: (+32)(0)10473050
lecoutre at stat.ucl.ac.be
http://www.stat.ucl.ac.be/ISpersonnel/lecoutre

If the statistics are boring, then you've got the wrong numbers. -Edward
Tufte   


> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch 
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Pascal BLEUYARD
> Sent: mardi 22 mars 2005 11:26
> To: r-help at stat.math.ethz.ch
> Subject: [R] Newbie: Matrix indexing
> 
> 
> Hi all,
> 
>   I need to compute some "occurence matrix": given a zero 
> matrix and a set of paired indexes, I want to store the 
> number of occurences of each paired index in a matrix. The 
> paired indexes are stores as an index matrix. I prefere not 
> to use loops for performances purpose.
> 
>   Here follows a dummy example:
> 
> > occurence <- matrix(0, 2, 2); data
>      [,1] [,2]
> [1,]    0    0
> [2,]    0    0
> >
> > index <- matrix(1, 3, 2); index
>      [,1] [,2]
> [1,]    1    1
> [2,]    1    1
> [3,]    1    1
> >
> > occurence[index] <- occurence[index] + 1
> 
>   I was expecting the folowing result:
> 
> > occurence
>      [,1] [,2]
> [1,]    3    0
> [2,]    0    0
> 
>   I get instead:
> 
> > occurence
>      [,1] [,2]
> [1,]    1    0
> [2,]    0    0
> 
>   I guess that there is some "hidden copy" involved but I 
> wanted to know if there is an efficient workaround (not using 
> some loop structure). I thought "factors" could do the job 
> but I didn't manage to use them for that problem.
> 
> --------------------------------------------------------------
> --------------
> Pascal BLEUYARD
> Laboratoire de Météorologie Physique (LaMP)
> OPGC, Université Blaise Pascal
> 24, avenue des Landais
> 63177 AUBIERE CEDEX
> Tél  : 04 73 40 73 75
> Fax : 04 73 40 51 36
> Mél : P.Bleuyard at opgc.univ-bpclermont.fr
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list 
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
>




More information about the R-help mailing list