On Sep 7, 2010, at 12:35 PM, Feng Li wrote:
Dear R,
I have two small questions confused me recently. Now assume I have a
matrix
"a", like this,
a <- matrix(1:6, 2, 3)
a
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
I sometimes need each row of "a" raised to a different exponent. So
I do a
trick like this,
a^c(2, 3)
[,1] [,2] [,3]
[1,] 1 9 25
[2,] 8 64 216
My first question is that if it is possible to do this trick column
wise?
Most questions of this sort are answerable by thinking of R matrices
as folded vectors. The folding occurs columnwise (unlike Matlab), so
for this problem:
> a^rep(c(2, 3, 4), each=nrow(a)) # the exponents become 2,2,3,3,4,4
[,1] [,2] [,3]
[1,] 1 27 625
[2,] 4 64 1296
or:
> a^matrix(c(2, 3, 4), byrow=TRUE, nrow=2, ncol=3)
[,1] [,2] [,3]
[1,] 1 27 625
[2,] 4 64 1296
Just out of curiosity, of course I know there are other ways of
doing this.
And the second question is why I get such result when I put another
element
in the exponent part like this,
Because argument recycling makes the exponents 2,3,4,2,3,4 and they
are applied folded column wise
a^c(2, 3, 4)
[,1] [,2] [,3]
[1,] 1 81 125
[2,] 8 16 1296
BTW, I have a 64bit R version (2.11) for Linux. Any advice would be
appreciated.
David Winsemius, MD
West Hartford, CT
______________________________________________
R-help@r-project.org 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.