Reputation: 4592
I have two matrix of same dimension filled with NA and strings. For example,
structure(c("Y1", "Y1", "Y1", NA, NA, NA, NA, NA, NA, NA, NA,
NA, "Y1", "Y1", "Y1", "Y2", NA, "Y2", NA, NA, NA, NA, NA, NA,
"Y1", "Y1", "Y1", "Y2", NA, "Y2", NA, NA, NA, NA, NA, NA, NA,
NA, NA, "Y2", NA, "Y2", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Y2", NA, "Y2", NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(12L,
12L))
and
structure(c("Y1", "Y1", "Y1", NA, NA, NA, NA, NA, NA, NA, NA,
NA, "Y1", "Y1", "Y1", NA, NA, NA, NA, NA, NA, NA, NA, NA, "Y1",
"Y1", "Y1", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Y2", "Y2",
"Y2", NA, "Y2", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "Y2", "Y2", "Y2", NA, "Y2", NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(12L,
12L))
I want to combine these two matrix. The resultant matrix will have same dimension as them and the elements should be as below:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,] "Y1" "Y1" "Y1" "" "" "" "" "" "" "" "" ""
[2,] "Y1" "Y1" "Y1" "Y2" "" "Y2" "" "" "" "" "" ""
[3,] "Y1" "Y1" "Y1" "Y2" "" "Y2" "" "" "" "" "" ""
[4,] "" "Y2" "Y2" "Y2" "" "Y2" "" "" "" "" "" ""
[5,] "" "" "" "" "" "" "" "" "" "" "" ""
[6,] "" "Y2" "Y2" "Y2" "" "Y2" "" "" "" "" "" ""
[7,] "" "" "" "" "" "" "" "" "" "" "" ""
[8,] "" "" "" "" "" "" "" "" "" "" "" ""
[9,] "" "" "" "" "" "" "" "" "" "" "" ""
[10,] "" "" "" "" "" "" "" "" "" "" "" ""
[11,] "" "" "" "" "" "" "" "" "" "" "" ""
[12,] "" "" "" "" "" "" "" "" "" "" "" ""
Upvotes: 0
Views: 48
Reputation: 38520
For matrices named mat1 and mat2, use logical indexing. In particular, use
mat1[is.na(mat1)] <- mat2[is.na(mat1)]
this returns
mat1
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,] "Y1" "Y1" "Y1" NA NA NA NA NA NA NA NA NA
[2,] "Y1" "Y1" "Y1" "Y2" NA "Y2" NA NA NA NA NA NA
[3,] "Y1" "Y1" "Y1" "Y2" NA "Y2" NA NA NA NA NA NA
[4,] NA "Y2" "Y2" "Y2" NA "Y2" NA NA NA NA NA NA
[5,] NA NA NA NA NA NA NA NA NA NA NA NA
[6,] NA "Y2" "Y2" "Y2" NA "Y2" NA NA NA NA NA NA
[7,] NA NA NA NA NA NA NA NA NA NA NA NA
[8,] NA NA NA NA NA NA NA NA NA NA NA NA
[9,] NA NA NA NA NA NA NA NA NA NA NA NA
[10,] NA NA NA NA NA NA NA NA NA NA NA NA
[11,] NA NA NA NA NA NA NA NA NA NA NA NA
[12,] NA NA NA NA NA NA NA NA NA NA NA NA
Upvotes: 5