[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