Hello,

I am sure I am not the only person with this problem.

I have a list with n elements, each consisting of a single column matrix
with different row lengths. Each row has a name ranging from A to E. Here
is an example:

alph[[1]]
A 1
B 2
C 3
D 4

alph[[2]]
A 1
C 3
D 4

alph[[3]]
A 1
D 4
E 5


I would like to create a matrix from the elements in the list with n
columns such that the row names are preserved and NAs are inserted into
the cells where the uneven lists do not match up based on their row names.
Here is an example of the desired output:

newmatrix
  [,1]  [,2]  [,3]
A  1     1     1
B  2     NA    NA
C  3     3     NA
D  4     4     4
E  NA    NA    5

Any suggestions?
I have tried
do.call("cbind",list)
I also thought I was on the right track when I tried converting each
element into a vector and then running this loop (which ultimately
failed):

newmat<-matrix(NA,ncol=3,nrow=5)
colnames(newmatrix)<-c(A:E)
for(j in 1:3){
for(i in 1:5){
for(k in 1:length(list[[i]])){
if(is.na(match(colnames(newmatrix),names(alph[[i]])))[j]==TRUE){
newmatrix[i,j]<-NA}
else newmatrix[i,j]<-alph[[i]][k]}}}

Thanks,
Chris
UCI Sociology

______________________________________________
R-help@stat.math.ethz.ch 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