On Sep 20, 2010, at 10:28 PM, David Winsemius wrote:


On Sep 20, 2010, at 10:12 PM, Gregory Ryslik wrote:

Hi,

I have a list of 5 main elements where each main element has 247 atomic entries either 0 or 1. I need to get this into a 247x5 matrix so I do "do.call(cbind, mylist)". However, it renumbers 0 to a 1 and the 1 to a 2 so that my matrix is filled with 1's and 2's.


If I had such a problem I would see if this were more effective:

matrix(unlist(mylist), length(mylist[[1]]) )

(There is the column major order default of R matrices.)

I understand I can fix it in this case by doing a replace but I would like to avoid that step. Further, sometimes, my list entries will be from 0 to n. I don't want to have to always renumber all the possibilities.

I'm not quite sure why this is going on because when I build the following: l <- list(c(1,2,3),c(1,2,3),c(1,2,3)) and execute do.call(cbind, l) it works just fine and there is no renumbering!

I wouldn't have expected it either, but you only provided an example of what did work. My attempt at reproducing your problem also failed:

> ll <- list(a=c(1,0,1,1,0), b=c(0,1,0,0,1)  )
> do.call(cbind, ll)
    a b
[1,] 1 0
[2,] 0 1
[3,] 1 0
[4,] 1 0
[5,] 0 1

I am wondering if you are dealing with factors and have not looked at your "list" with str(). Haven't tried my method above to see what would happen in tat instance.

Does seem possible that is the issue:
> do.call(cbind, list(factor(c(0,1,0,1,1,1,0)),b=factor(c(0,0,0,1,1,1,1))))
       b
[1,] 1 1
[2,] 2 1
[3,] 1 1
[4,] 2 2
[5,] 2 2
[6,] 2 2
[7,] 1 2

--
David.

______________________________________________
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