Skip to content
Prev 274178 / 398506 Next

Problem with pmax and matrix to calculate row maxima

Hi Wolfgang,

how about a loop?

matRandom <- matrix(runif(n=600000), ncol=6)

## variant 1
system.time(test1 <- pmax(matRandom[,1], matRandom[,2], matRandom[,3],
                           matRandom[,4], matRandom[,5], matRandom[,6]))

User      System verstrichen
0.01        0.00        0.01


## variant 2
system.time(test2 <- apply(matRandom, 1, max))

User      System verstrichen
0.56        0.00        0.56


## variant 3
system.time({
   test3 <- matRandom[ ,1L]
   ## add a check that ncol(matrix) > 1L
   for (i in 2:ncol(matRandom))
     test3 <- pmax(test3, matRandom[ ,i])

})
User      System verstrichen
0.01        0.00        0.01



 > all.equal(test1,test2)
[1] TRUE

 > all.equal(test1,test3)
[1] TRUE


Regards,
Enrico

Am 12.10.2011 13:06, schrieb Wolfgang Wu: