【问题标题】:Combine character matrices into one将字符矩阵合二为一
【发布时间】:2020-05-12 08:41:10
【问题描述】:

给定两个矩阵

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


    【解决方案1】:

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

    ifelse(a == '', b, a)
    
    #    [,1] [,2]
    #[1,] "a"  ""  
    #[2,] "b"  "d" 
    

    【讨论】:

      【解决方案2】:

      你也可以这样做:

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

      【讨论】:

        【解决方案3】:

        我们也可以使用。 case_when

        library(dplyr)
        case_when(a== '' ~ b, TRUE ~ a)
        

        【讨论】:

          猜你喜欢
          • 2016-03-18
          • 1970-01-01
          • 2020-08-22
          • 2020-03-19
          • 1970-01-01
          • 2014-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多