[R] Column product

Steven Yen syen04 at gmail.com
Fri Jul 1 16:15:30 CEST 2016


A is a 5 x 3 matrix and a is a 3-vector. I like to exponentiate A[,1] to 
a[1], A[,2] to a[2], and A[,3] to a[3], and obtain the product of the 
resulting columns, as in line 3.

I also accomplish this with lines 4 and 5. I like to have rowProducts(B) 
but there is not so I came up with something ugly in line 
5--exponentiating the row sums of log. Is there a more elegant way than 
than line 5 or, better yet, lines 4 and 5 together? Thanks.

A<-matrix(1:15,nrow=5,byrow=F); A
a<-c(1,2,3)
(A[,1]^a[1])*(A[,2]^a[2])*(A[,3]^a[3])
B<-t(t(A)^a); B
exp(rowSums(log(B)))

Result:

 > A<-matrix(1:15,nrow=5,byrow=F); A
      [,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15
 > a<-c(1,2,3)
 > (A[,1]^a[1])*(A[,2]^a[2])*(A[,3]^a[3])
[1]   47916  169344  421824  889056 1687500
 > B<-t(t(A)^a); B
      [,1] [,2] [,3]
[1,]    1   36 1331
[2,]    2   49 1728
[3,]    3   64 2197
[4,]    4   81 2744
[5,]    5  100 3375
 > exp(rowSums(log(B)))
[1]   47916  169344  421824  889056 1687500
 >


	[[alternative HTML version deleted]]



More information about the R-help mailing list