From: David <dpleydel_at_univ-fcomte.fr>

Date: Wed, 27 Jun 2007 14:29:13 +0200

Date: Wed, 27 Jun 2007 14:29:13 +0200

Hi

I want to sum over one of the dimensions of a n x k1 x k2 array in which each column is the product of the corresponding columns from two matrices with dimensions n x k1 and n x k2. I can see two approaches: a loop on k1 and a loop on k2. But I cannot figure a solution that avoids the loop? Is it possible? (I don't refer to apply or lapply etc either as they are just hidden loops so, correct me if I'm wrong, I can't see they hold any real advantage here). The following does exactly what I want (except for the loops). My aim is to find the solution which minimises processing time.

cheers

Dave

## Basic paramters

k1=3

k2=2

n=10

m1 = matrix (1:(n*k1), nrow=n, ncol=k1)

m2 = matrix (1:(n*k2), nrow=n, ncol=k2)

## Approach 1: loop on k1

output1 = matrix(0,nrow=n,ncol=k2)

pt1 = proc.time(for (i in 1:k1) output1 = output1 + m1[,i]*m2)

## Approach 2: loop on k2

output2 = matrix(0,nrow=n,ncol=k2)

pt2 = proc.time(for (i in 1:k2) output2[,i] = rowSums( m1*m2[,i] ))

## Same result

sum(output1-output2)

-- David Pleydell Laboratoire de Biologie Environnementale USC INRA-EA 3184 Université de Franche-Comté Place Leclerc F 25030 Besançon France (0033) 0381665763 dpleydel_at_univ-fcomte.fr ______________________________________________ R-help_at_stat.math.ethz.ch 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.Received on Wed 27 Jun 2007 - 12:31:53 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Fri 29 Jun 2007 - 12:32:37 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*