根据序列将行和列添加到矩阵,并用NaN填充它

时间:2018-06-11 12:03:28

标签: r matrix row fill col

我有一个带有镜面行和列的矩阵mat_1,但缺少其中一个。所以,让我说我想按字母顺序排列行和列:a,b,c,d,e,但我的矩阵缺少一个字母,即b。

如何生成代码片段,在mat_1中按字母顺序查找间隙,添加缺失的行和列,并在第二个矩阵中用NaN填充观察结果{ {1}}?

这是我可重复的例子:

mat_2

1 个答案:

答案 0 :(得分:3)

一分钟之前有一个答案,我认为这是一个非常好的答案,我实际上再次通过一些修改来评论它,然后向上投票,但它似乎已被删除

在任何情况下,这里都是上述答案的更新版本

#create matrix with missing column and row
mat_1 = matrix(rnorm(16), nrow=4, ncol=4, byrow = TRUE) 

#rename columns and rows
dimnames(mat_1) = list(c("a", "c", "d", "e"), c("a", "c", "d", "e")) 

mat_2 <- matrix(
  NA,
  nrow = length(letters[1:5]),
  ncol = length(letters[1:5]),
  dimnames = list(letters[1:5], letters[1:5]))

mat_2[rownames(mat_1), colnames(mat_1)] <- mat_1

mat_2

#            a  b          c           d           e
# a -0.5021924 NA  0.1315312 -0.07891709  0.88678481
# b         NA NA         NA          NA          NA
# c  0.1169713 NA  0.3186301 -0.58179068  0.71453271
# d -0.8252594 NA -0.3598621  0.08988614  0.09627446
# e -0.2016340 NA  0.7398405  0.12337950 -0.02931671