结合相同维度的矩阵

时间:2017-11-10 13:41:37

标签: r matrix data-manipulation

我有两个相同维度的矩阵,用NA和字符串填充。例如,

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))

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))

我想结合这两个矩阵。得到的矩阵将具有与它们相同的尺寸,元素应如下所示:

 [,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,] ""     ""     ""     ""     ""   ""     ""   ""   ""   ""    ""    ""   

1 个答案:

答案 0 :(得分:5)

对于名为mat1和mat2的矩阵,使用逻辑索引。特别是,使用

mat1[is.na(mat1)] <- mat2[is.na(mat1)]

返回

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