[R] Problem with pmax and matrix to calculate row maxima

Wolfgang Wu wobwu22 at yahoo.de
Wed Oct 12 13:06:59 CEST 2011


I am having the following problem. I want to calculate the maximum of each row in a matrix. If I pass in the matrix split up by each column then this is no problem and works great. However I don't know how many columns I have in advance. In the example below I have 3 columns, but the number of columns is not fix. So how do I do this? 


    matRandom <- matrix(runif(n=30), ncol=3);
    #Does not work
    pmax(matRandom)
    #Does work
    pmax(matRandom[,1], matRandom[,2], matRandom[,3])


I am aware that I can do it with the apply function, but the calculation is time sensitive so fast execution is important. 

   
    #Apply might be too slow    

    matRandom <- matrix(runif(n=300000), ncol=3);
    system.time(test <- pmax(matRandom[,1], matRandom[,2], matRandom[,3]))
    system.time(test <- apply(matRandom, 1, max))


>matRandom <- matrix(runif(n=300000), ncol=3);
>system.time(test <- pmax(matRandom[,1], matRandom[,2], matRandom[,3]))
   user  system elapsed 
   0.02    0.00    0.02 
>system.time(test <- apply(matRandom, 1, max))
>    user  system elapsed 
   2.37    0.00    2.38 




Thanks for your help.

Regards.

 
Wolfgang Wu



More information about the R-help mailing list