Suppose I have two lists that include multiple matrices. The first list includes matrices with dimensions that differ from matrix to matrix:
Code to create a list1:
d<-c(0,1,0,1) e<-c(1,0,0,0) f<-c(0,0,0,0) g<-c(1,0,0,0) cn<-c(1,2,3,4) p<-data.frame(d,e,f,g) dimnames(p)<-list(cn,cn) d<-c(0,1,0,1,0) e<-c(1,0,0,0,0) f<-c(0,0,0,0,0) g<-c(1,0,0,0,1) h<-c(0,0,0,1,0) cn<-c(1,2,3,4,5) q<-data.frame(d,e,f,g,h) dimnames(q)<-list(cn,cn) list1<-list(p,q) names(list1)<-1990:1991
List1:
list1 $`1990` 1 2 3 4 1 0 1 0 1 2 1 0 0 0 3 0 0 0 0 4 1 0 0 0 $`1991` 1 2 3 4 5 1 0 1 0 1 0 2 1 0 0 0 0 3 0 0 0 0 0 4 1 0 0 0 1 5 0 0 0 1 0
The second list includes matrices that always have the same size and include all cases that have ever arisen in List1 matrices (6.7 will occur in additional matrices in list 1).
Code to create a list2:
o<-matrix(NA,nrow=7,ncol=7) dimnames(o)<-list(1:7, 1:7) list2<-list(o,o) names(list2)<-1990:1991
List2:
list2 $`1990` 1 2 3 4 5 6 7 1 NA NA NA NA NA NA NA 2 NA NA NA NA NA NA NA 3 NA NA NA NA NA NA NA 4 NA NA NA NA NA NA NA 5 NA NA NA NA NA NA NA 6 NA NA NA NA NA NA NA 7 NA NA NA NA NA NA NA $`1991` 1 2 3 4 5 6 7 1 NA NA NA NA NA NA NA 2 NA NA NA NA NA NA NA 3 NA NA NA NA NA NA NA 4 NA NA NA NA NA NA NA 5 NA NA NA NA NA NA NA 6 NA NA NA NA NA NA NA 7 NA NA NA NA NA NA NA
What I would like to do is replace the NA in list2, if available, with the values ββfrom the corresponding matrix from list1 so that the result looks like this:
$`1990` 1 2 3 4 5 6 7 1 0 1 0 1 NA NA NA 2 1 0 0 0 NA NA NA 3 0 0 0 0 NA NA NA 4 1 0 0 0 NA NA NA 5 NA NA NA NA NA NA NA 6 NA NA NA NA NA NA NA 7 NA NA NA NA NA NA NA $`1991` 1 2 3 4 5 6 7 1 0 1 0 1 0 NA NA 2 1 0 0 0 0 NA NA 3 0 0 0 0 0 NA NA 4 1 0 0 0 1 NA NA 5 0 0 0 1 0 NA NA 6 NA NA NA NA NA NA NA 7 NA NA NA NA NA NA NA
I believe there is a way to do this using the merge command. However, I have not yet decided the solution, so any input is welcome!