[R] Matrix: Problem with the code

Kingsford Jones kingsfordjones at gmail.com
Sat Jan 10 03:37:57 CET 2009


On Fri, Jan 9, 2009 at 6:36 PM,  <markleeds at verizon.net> wrote:
> Charlotte: I ran your code because I wasn't clear on it and your way would
> cause more matrices than the person requested.

Bhargab gave us

     x<-c(23,67,2,87,9,63,8,2,35,6,91,41,22,3)

and said: "I want to have a matrix with p columns such that each
column will have the elements of  x^(column#)."

so, I think Charlotte's code was spot-on:

p <- 3
outer(x, 1:p, '^')
     [,1] [,2]   [,3]
 [1,]   23  529  12167
 [2,]   67 4489 300763
 [3,]    2    4      8
 [4,]   87 7569 658503
 [5,]    9   81    729
 [6,]   63 3969 250047
 [7,]    8   64    512
 [8,]    2    4      8
 [9,]   35 1225  42875
[10,]    6   36    216
[11,]   91 8281 753571
[12,]   41 1681  68921
[13,]   22  484  10648
[14,]    3    9     27


Here's another way -- a bit less elegant, but a gentle
introduction to thinking in vectors rather than elements:

 mat <- matrix(0,nrow=length(x), ncol=p)

 for(i in 1:p) mat[,i] <- x^i
 mat
     [,1] [,2]   [,3]
 [1,]   23  529  12167
 [2,]   67 4489 300763
 [3,]    2    4      8
 [4,]   87 7569 658503
 [5,]    9   81    729
 [6,]   63 3969 250047
 [7,]    8   64    512
 [8,]    2    4      8
 [9,]   35 1225  42875
[10,]    6   36    216
[11,]   91 8281 753571
[12,]   41 1681  68921
[13,]   22  484  10648
[14,]    3    9     27


best,

Kingsford Jones






So
> I think the code below it, although not too short, does what the person
> asked. Thanks though because I understand outer better now.
>
> temp <- matrix(c(1,2,3,4,5,6),ncol=2)
> print(temp)
>
> #One of those more elegant ways:
> print(temp)
> outer(temp,1:p,'^')One of those more elegant ways:
>
>
> # THIS WAY I THINK GIVES WHAT THEY WANT
>
> sapply(1:ncol(temp), function(.col) {
>  temp[,.col]^.col
> })
>
>
>
> On Fri, Jan 9, 2009 at  7:40 PM, Charlotte Wickham wrote:
>
>> One of those more elegant ways:
>> outer(x, 1:p, "^")
>>
>> Charlotte
>>
>> On Fri, Jan 9, 2009 at 4:24 PM, Sarah Goslee <sarah.goslee at gmail.com>
>> wrote:
>>>
>>> Well, mat doesn't have any dimensions / isn't a matrix, and we don't
>>> know what p is supposed to be. But leaving aside those little details,
>>> do you perhaps want something like this:
>>>
>>>     x<-c(23,67,2,87,9,63,8,2,35,6,91,41,22,3)
>>>     p <- 5
>>>     mat<- matrix(0, nrow=p, ncol=length(x))
>>>     for(j in 1:length(x))
>>>     {
>>>         for(i in 1:p)
>>>             mat[i,j]<-x[j]^i
>>>     }
>>>
>>> Two notes: I didn't try it out, and if that's what you want rather
>>> than a toy example
>>> of a larger problem, there are more elegant ways to do it in R.
>>>
>>> Sarah
>>>
>>> On Fri, Jan 9, 2009 at 6:42 PM, Bhargab Chattopadhyay
>>> <bhargab_1 at yahoo.com> wrote:
>>>>
>>>> Hi,
>>>>
>>>>
>>>> Can any one please explain why the following code doesn't work? Or can
>>>> anyone suggest an alternative.
>>>> Suppose
>>>>      x<-c(23,67,2,87,9,63,8,2,35,6,91,41,22,3)
>>>>       mat<-0;
>>>>       for(j in 1:length(x))
>>>>       {
>>>>          for(i in 1:p)
>>>>               mat[i,j]<-x[j]^i;
>>>>       }
>>>>   Actually I want to have a matrix with p columns such that each column
>>>> will have the elements of  x^(column#).
>>>>
>>>> Thanks in advance.
>>>>
>>>> Bhargab
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Sarah Goslee
>>> http://www.functionaldiversity.org
>>>
>>> ______________________________________________
>>> R-help at 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.
>>>
>>
>> ______________________________________________
>> R-help at 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.
>
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list