Ack,  apologies for the previous email. What I meant to say is that the first 
element is calculated incorrectly (1,1) should be 2, instead it is 3. I've been 
staring at the code for two long. I've copied it in again for convenience.

mymats <- vector('list', 4)
set.seed(246)

# Generate a list of 4 3 x 3 matrices
for(i in 1:4) mymats[[i]] <- matrix(sample(1:9), nrow = 3)

mymats[[1]][1,1]<-3
mymats[[1]][1,2]<-3
mymats[[1]][1,3]<-1
mymats[[2]][2,1]<-2
mymats[[1]][2,2]<-3
mymats[[1]][2,3]<-1
mymats[[1]][3,1]<-2
mymats[[1]][3,2]<-2
mymats[[1]][3,3]<-3

mymats[[2]][1,1]<-2
mymats[[2]][1,2]<-3
mymats[[2]][1,3]<-2
mymats[[2]][2,1]<-1
mymats[[2]][2,2]<-2
mymats[[2]][2,3]<-2
mymats[[2]][3,1]<-1
mymats[[2]][3,2]<-3
mymats[[2]][3,3]<-2

mymats[[3]][1,1]<-NA
mymats[[3]][1,2]<-2
mymats[[3]][1,3]<-2
mymats[[3]][2,1]<-2
mymats[[3]][2,2]<-3
mymats[[3]][2,3]<-1
mymats[[3]][3,1]<-2
mymats[[3]][3,2]<-2
mymats[[3]][3,3]<-3

mymats[[4]][1,1]<-2
mymats[[4]][1,2]<-1
mymats[[4]][1,3]<-2
mymats[[4]][2,1]<-3
mymats[[4]][2,2]<-2
mymats[[4]][2,3]<-3
mymats[[4]][3,1]<-1
mymats[[4]][3,2]<-2
mymats[[4]][3,3]<-1

mymats


mode <- function(x){
        as.numeric(names(which.max(table(x)))) 
        }
apply(array(unlist(mymats), dim = c(length(mymats), dim(mymats[[1]]))), 1:2, 
mode)


On Sep 21, 2010, at 10:08 AM, Henrique Dallazuanna wrote:

> Try this:
> 
> mode <- function(x, ...)
>     as.numeric(names(which.max(table(x))))
> apply(array(unlist(mymats), dim = c(length(mymats), dim(mymats[[1]]))), 1:2, 
> mode)
> 
> 
> On Tue, Sep 21, 2010 at 10:47 AM, Gregory Ryslik <rsa...@comcast.net> wrote:
> Hi Everyone,
> 
> I am interested in taking the mode over several thousand matrices. I show an 
> example below. For the [1,1] entry of my "mode" matrix that I want to create 
> I would like to have a "2". For the [1,2] entry I would want a 2.  For the 
> [2,2] entry it would be 4 and so forth. Earlier, I was working with 
> continuous cases and thus each (n,m) element was simply an average. I was 
> able to then do element-wise addition and counting using the "Reduce" 
> function and then the average would be totalsum/totalcount where the NA terms 
> were discounted. Here, it's not exactly a binary case so Reduce doesn't quite 
> work as well. I'm open to suggestions but would as always like to avoid long 
> loops as that will significantly bump up running time over several thousand 
> trees. Similarly, I would not like to do a lot of sorts to find the mode 
> either...
> 
> Thanks for your help!
> 
> mymats
> [[1]]
>     [,1] [,2] [,3]
> [1,]    0    2    1
> [2,]    2    3    3
> [3,]    2    1    2
> 
> [[2]]
>     [,1] [,2] [,3]
> [1,]    1    2    4
> [2,]    2    4    4
> [3,]    3    4    5
> 
> [[3]]
>     [,1] [,2] [,3]
> [1,]    2    3    1
> [2,]    3    4    2
> [3,]    5    1    3
> 
> [[4]]
>     [,1] [,2] [,3]
> [1,]    2    4    2
> [2,]    1   NA    2
> [3,]    2    3    1
> 
> [[5]]
>     [,1] [,2] [,3]
> [1,]   NA    2    1
> [2,]    2    4    1
> [3,]    1    3    2
> ______________________________________________
> R-help@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.
> 
> 
> 
> -- 
> Henrique Dallazuanna
> Curitiba-Paraná-Brasil
> 25° 25' 40" S 49° 16' 22" O


        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to