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.

Reply via email to