[R] Another loop avoidance question.

From: David <dpleydel_at_univ-fcomte.fr>
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.