Matrix max by row
It seems to be very system dependent. Here's another take:
m <- matrix(runif(100000),1000,100) junk <- gc() print(system.time(for(i in 1:100) X1 <- do.call(pmax,data.frame(m))))
user system elapsed 1.53 0.01 1.57
junk <- gc() print(system.time(for(i in 1:100) X2 <- apply(m,1,max)))
user system elapsed 1.81 0.00 1.83
Now what happens if you work with data frames rather than matrices:
m <- data.frame(matrix(runif(100000),1000,100)) junk <- gc() print(system.time(for(i in 1:100) X1 <- do.call(pmax, m)))
user system elapsed 0.31 0.00 0.31
junk <- gc() print(system.time(for(i in 1:100) X2 <- apply(m,1,max)))
user system elapsed 3.22 0.03 3.34
Go figure! Bill Venables http://www.cmis.csiro.au/bill.venables/ -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Rolf Turner Sent: Monday, 30 March 2009 1:39 PM To: Bert Gunter Cc: 'Wacek Kusnierczyk'; r-help at r-project.org Subject: Re: [R] Matrix max by row I tried the following: m <- matrix(runif(100000),1000,100) junk <- gc() print(system.time(for(i in 1:100) X1 <- do.call(pmax,data.frame(m)))) junk <- gc() print(system.time(for(i in 1:100) X2 <- apply(m,1,max))) and got user system elapsed 2.704 0.110 2.819 user system elapsed 1.938 0.098 2.040 so unless there's something that I am misunderstanding (always a serious consideration) Wacek's apply method looks to be about 1.4 times *faster* than the do.call/pmax method. cheers, Rolf Turner
On 30/03/2009, at 3:55 PM, Bert Gunter wrote:
If speed is a consideration,availing yourself of the built-in pmax() function via do.call(pmax,data.frame(yourMatrix)) will be considerably faster for large matrices. If you are puzzled by why this works, it is a useful exercise in R to figure it out. Hint:The man page for ?data.frame says: "A data frame is a list of variables of the same length with unique row names, given class 'data.frame'." Cheers, Bert Bert Gunter Genentech Nonclinical Statistics -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- project.org] On Behalf Of Wacek Kusnierczyk Sent: Saturday, March 28, 2009 5:22 PM To: Ana M Aparicio Carrasco Cc: r-help at r-project.org Subject: Re: [R] Matrix max by row Ana M Aparicio Carrasco wrote:
I need help about how to obtain the max by row in a matrix. For example if I have the following matrix: 2 5 3 8 7 2 1 8 4 The max by row will be: 5 8 8
matrix(apply(m, 1, max), nrow(m)) vQ
______________________________________________ R-help at 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. ______________________________________________ R-help at 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.
######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}
______________________________________________
R-help at 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.