The apply was exactly what I was after. And, I will check out the others as well. great tips!
"Gabor Grothendieck" <[EMAIL PROTECTED]> 09/06/2006 11:11 AM To "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> cc [email protected] Subject Re: [R] Matrix multiplication using apply() or lappy() ? This last one could also be written slightly shorter as: t(apply(a, 1, "/", a[1,])) On 9/6/06, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > And here is one more: > > t(apply(a, 1, function(x) x/a[1,])) > > On 9/6/06, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > > Here are a few possibilities: > > > > a <- matrix(1:24, 4) # test data > > > > a / rep(a[1,], each = 4) > > > > a / outer(rep(1, nrow(a)), a[1,]) > > > > a %*% diag(1/a[1,]) > > > > sweep(a, 2, a[1,], "/") > > > > > > On 9/6/06, [EMAIL PROTECTED] > > <[EMAIL PROTECTED]> wrote: > > > I am trying to divide the columns of a matrix by the first row in the > > > matrix. > > > > > > I have tried to get this using apply and I seem to be missing a concept > > > regarding the apply w/o calling a function but rather command args %*% / > > > etc. Would using apply be more efficient than this approach? > > > > > > I have observed examples in the archives using this type of approach. Does > > > anybody have a snippet of a call to apply() that would accomplish this as > > > well? > > > > > > Thanks! > > > > > > > > > seed=50 > > > $a = array(rnorm(20),dim=c(4,5)) > > > $b = matrix(a[1,],dim(a)[1],dim(a)[2],byrow=T) > > > $a > > > [,1] [,2] [,3] [,4] [,5] > > > [1,] -1.3682810 -0.4314462 1.57572752 0.67928882 -0.3672346 > > > [2,] 0.4328180 0.6556479 0.64289931 0.08983289 0.1852306 > > > [3,] -0.8113932 0.3219253 0.08976065 -2.99309008 0.5818237 > > > [4,] 1.4441013 -0.7838389 0.27655075 0.28488295 1.3997368 > > > > > > $a/b > > > [,1] [,2] [,3] [,4] [,5] > > > [1,] 1.0000000 1.0000000 1.00000000 1.0000000 1.000000 > > > [2,] -0.3163225 -1.5196515 0.40800157 0.1322455 -0.504393 > > > [3,] 0.5930018 -0.7461539 0.05696457 -4.4062113 -1.584338 > > > [4,] -1.0554128 1.8167710 0.17550671 0.4193841 -3.811560 > > > > > > > > > > > > ------------------------------------------------------------ > > > CONFIDENTIALITY NOTICE: This electronic mail transmission (i...{{dropped}} > > > > > > ______________________________________________ > > > [email protected] 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. > > > > > > ------------------------------------------------------------ CONFIDENTIALITY NOTICE: This electronic mail transmission (i...{{dropped}} ______________________________________________ [email protected] 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.
