我有一个矩阵,其行名称为a和e,列名称为b c d e。
a b c d e
a 1 0 0 1 0
e 1 0 0 1 0
我正在尝试创建一个带有新行的方阵(在本例中为3)。
a b c d e
a 1 0 0 1 0
e 1 0 0 1 0
b 0 0 0 0 0
c 0 0 0 0 0
d 0 0 0 0 0
三个名为b c&的新行d(唯一的行名称)并用零填充它们。
非常感谢任何建议。
答案 0 :(得分:2)
使用setdiff
确定需要添加哪些行,创建一个空矩阵,并将rbind
组合在一起:
toAdd <- setdiff(colnames(mat), rownames(mat))
m <- matrix(0, ncol = ncol(mat), nrow = length(toAdd),
dimnames = list(toAdd, colnames(mat)))
rbind(mat, m)
# a b c d e
# a 1 0 0 1 0
# e 1 0 0 1 0
# b 0 0 0 0 0
# c 0 0 0 0 0
# d 0 0 0 0 0
这假定&#34; mat&#34;定义为:
mat <- structure(c(1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L),
.Dim = c(2L, 5L),
.Dimnames = list(c("a", "e"), c("a", "b", "c", "d", "e")))