代码之家  ›  专栏  ›  技术社区  ›  cliu

基于另一个矩阵,用NA填充矩阵中缺失的数据

  •  1
  • cliu  · 技术社区  · 4 年前

    我有两个邻接矩阵,其中第二个矩阵有一些缺失的数据(这意味着这两个矩阵的平方大小不同),但我如何在第二个阵列中用NA填充缺失的数据?

    以下数据:

    #first matrix
    t1 = matrix(
      c(1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1),
      nrow = 4,  
      ncol = 4,        
      byrow = TRUE         
    )
    rownames(t1) <- c("a","b", "c", "d")
    colnames(t1) <- c("a","b", "c", "d")
    
    #second matrix
    t2 = matrix(
      c(1, 1, 0, 0, 0, 1, 0, 0, 1),
      nrow = 3,  
      ncol = 3,        
      byrow = TRUE         
    )
    rownames(t2) <- c("a","c", "d") #assume data from b are missing here
    colnames(t2) <- c("a","c", "d")
    

    第二个矩阵的预期成果:

      a  b  c  d
    a 1  NA 1  0
    b NA NA NA NA
    c 0  NA 0  1
    d 0  NA 0  1
    

    我有一个更大的数据集,因此我们将感谢更有效的方法@

    1 回复  |  直到 4 年前
        1
  •  1
  •   Robert Hacken    4 年前

    如果可以依赖行和列名:

    t3 <- t1
    t3[] <- NA
    t3[rownames(t2), colnames(t2)] <- t2
    
    t3
    #    a  b  c  d
    # a  1 NA  1  0
    # b NA NA NA NA
    # c  0 NA  0  1
    # d  0 NA  0  1