# RE: [R] Newbie: Matrix indexing

From: Eric Lecoutre <lecoutre_at_stat.ucl.ac.be>
Date: Tue 22 Mar 2005 - 21:43:28 EST

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@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@stat.math.ethz.ch
> [mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Pascal BLEUYARD
> Sent: mardi 22 mars 2005 11:26
> To: r-help@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
>
>
> > 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@opgc.univ-bpclermont.fr
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help