[R] matrix problem
Sarah Goslee
sarah.goslee at gmail.com
Mon Jun 20 23:21:59 CEST 2011
How about:
y <- c(1,1,1,3,2)
m <- matrix(0, nrow=length(y), ncol=4)
m[y==1, ] <- matrix(1:4, nrow=sum(y == 1), ncol=4, byrow=TRUE)
or, depending on your actual problem
y <- c(1,1,1,3,2)
m <- matrix(0, nrow=length(y), ncol=4)
m[y == 1,] <- col(m[y == 1,])
Sarah
On Mon, Jun 20, 2011 at 3:54 PM, Costis Ghionnis <conighion at gmail.com> wrote:
> Hallo everyone! I have a problem about creating a matrix...
>
> Suppose we have a vector y<-c(1,1,1,3,2)
>
> and a zero matrix, m ,with nrows=length(y) and ncol=4.
>
> The matrix would look like this:
> 0 0 0 0
> 0 0 0 0
> 0 0 0 0
> 0 0 0 0
> 0 0 0 0
>
> I want to change the first three rows with the vector c(1,2,3,4).
> I thought that with the command m[y==1,1:4]<-c(1,2,3,4) i would get
>
> 1 2 3 4
> 1 2 3 4
> 1 2 3 4
> 0 0 0 0
> 0 0 0 0
>
> but instead i am getting
>
> 1 4 3 2
> 2 1 4 3
> 3 2 1 4
> 0 0 0 0
> 0 0 0 0
>
> It seems it is filling the data by col instead by row. I want to use this technique in more complicated problems.
> So i do not want to have to work with the transpose matrix. Do you know another way to make this work. Thank you...
>
--
Sarah Goslee
http://www.functionaldiversity.org
More information about the R-help
mailing list