[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