R在行名称唯一的矩阵中添加额外的行

时间:2014-10-21 04:01:33

标签: r matrix

我有一个矩阵,其行名称为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(唯一的行名称)并用零填充它们。

非常感谢任何建议。

1 个答案:

答案 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")))