[R] z[i,j] = x[i,j] * y(i+j) ?

glen_b glnbrntt at gmail.com
Thu Jul 30 05:56:38 CEST 2009



For the life of me I couldn't work out what to searc

I have an m*n numeric matrix x and a numeric vector y (of length m+n-1)

How do I do a calculation like this?

z[i,j] = x[i,j] * y[i+j] ?


Well, one can write a pair of loops, or write a single loop 
within which we calculate a vector at a time, but ...

is there a "neat" way to do it?

tiny example:
x<-matrix(data=c(32,46,21,28,58,60,33,32,16,NA,10,15),nrow=4)
y<-c(1.1,1.09,1.08,1.06,1.05,1.02)
z<-matrix(nrow=4,ncol=3)

z[,1]=x[,1]*y[1:4]
z[,2]=x[,2]*y[2:5]
z[,3]=x[,3]*y[3:6]
 
which produces:

> x
     [,1] [,2] [,3]
[1,]   32   58   16
[2,]   46   60   NA
[3,]   21   33   10
[4,]   28   32   15

> y
[1] 1.10 1.09 1.08 1.06 1.05 1.02

> z
      [,1]  [,2]  [,3]
[1,] 35.20 63.22 17.28
[2,] 50.14 64.80    NA
[3,] 22.68 34.98 10.50
[4,] 29.68 33.60 15.30

> z/x
     [,1] [,2] [,3]
[1,] 1.10 1.09 1.08
[2,] 1.09 1.08   NA
[3,] 1.08 1.06 1.05
[4,] 1.06 1.05 1.02

(this last to indicate what each element of x was multiplied by to produce
z... well, apart from the NA)

Thanks for any pointers

Glen

-- 
View this message in context: http://www.nabble.com/z-i%2Cj--%3D-x-i%2Cj--*-y%28i%2Bj%29---tp24731799p24731799.html
Sent from the R help mailing list archive at Nabble.com.




More information about the R-help mailing list