我有两个方阵,它们都有一些缺失的数据.我想在两个矩阵中用NA填充缺失的数据

数据如下:

#first matrix
t1 = matrix(
  c(1, 0, 1, 0, 0, 1, 1, 0, 1),
  nrow = 3,  
  ncol = 3,        
  byrow = TRUE         
)
rownames(t1) <- c("a","b", "c")
colnames(t1) <- c("a","b", "c")

#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") 
colnames(t2) <- c("a","c", "d")
#Expected outcome for the two matrices:
#first matrix
  a  b  c  d
a 1  0  1  NA
b 0  0  1  NA
c 1  0  1  NA
d NA NA NA NA

#second matrix
  a  b  c  d
a 1  NA 1  0
b NA NA NA NA
c 0  NA 0  1
d 0  NA 0  1

我如何实现这一点?优选地,结果是包含这两个NA填充的矩阵的列表

推荐答案

如果每个矩阵中的行名和列名始终相同(此处没有硬编码的行名/列名):

nam <- union(rownames(t1), rownames(t2))
m <- array(dim=rep(length(nam), 2),
           dimnames=list(nam, nam))
lapply(list(t1, t2), function(x) {
  m[rownames(x), colnames(x)] <- x
  m
})

# [[1]]
#    a  b  c  d
# a  1  0  1 NA
# b  0  0  1 NA
# c  1  0  1 NA
# d NA NA NA NA
# 
# [[2]]
#    a  b  c  d
# a  1 NA  1  0
# b NA NA NA NA
# c  0 NA  0  1
# d  0 NA  0  1

R相关问答推荐

self_函数无法工作--无法子集结束后的列

有没有方法将琴弦完全捕捉到R中的多边形?

在通过最大似然估计将ODE模型与数据匹配时,为什么要匹配实际参数的转换值?

如何使用R Shiny中的条件面板仅隐藏和显示用户输入,同时仍允许运行基础计算?

判断字符串中数字的连续性

无法正确设置动态创建的Quarto标注的格式

`lazy_dt`不支持`dplyr/across`?

ComplexHEAT:使用COLUMN_SPLIT时忽略COLUMN_ORDER

在保留列表元素属性的同时替换列表元素

具有重复元素的维恩图

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

仅在R中的数据集开始和结束时删除所有 Select 列的具有NA的行

从多个可选列中选取一个值到一个新列中

计算使一组输入值最小化的a、b和c的值

删除在R中的write.table()函数期间创建的附加行

在同一单元格中创建包含整数和百分比的交叉表

在ggplot2图表中通过端点连接点

我已经运行了几个月的代码的`Palette()`中出现了新的gglot错误

roxygen2正在处理太多的文件

如何在刻面和翻转堆叠条形图中对齐geom_text()