[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