将字符矩阵合并为一个

问题描述 投票:0回答:3

给出两个矩阵

a <- matrix(c("a","","","d"),2,2)
b <- matrix(c("","b","",""),2,2)

a
     [,1] [,2]
[1,] "a"  ""  
[2,] ""   "d" 
b
     [,1] [,2]
[1,] ""   ""  
[2,] "b"  ""  

是否有一种简单的方法可以将两者结合起来并得到

     [,1] [,2]
[1,] "a"   ""  
[2,] "b"  "d"  

没有遍历每个单独的元素?

我通常对这个“合并”的问题感兴趣。但是,目前,每个单元格仅在那些矩阵之一中为非空(即,排除了单元格[1,1]包含矩阵a和矩阵b中的情况)。

r matrix
3个回答
5
投票

如果两个矩阵的维数相同,我们可以做:

ifelse(a == '', b, a)

#    [,1] [,2]
#[1,] "a"  ""  
#[2,] "b"  "d" 

1
投票

您也可以这样做:

a[a == "" & b != ""] <- b[b != ""]
a
     [,1] [,2]
[1,] "a"  ""  
[2,] "b"  "d" 

0
投票

我们也可以使用。 case_when

library(dplyr)
case_when(a== '' ~ b, TRUE ~ a)
© www.soinside.com 2019 - 2024. All rights reserved.