我有两个方阵,它们都有一些缺失的数据。我想在两个矩阵中用 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 - 用 NA 填充两个矩阵的缺失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73838452/