[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