根据组合的col- and - row-name从向量填充R矩阵



我试图填充一个矩阵的值从一个向量,其中每个值的名称是矩阵的col-和行名称的组合。

set.seed(1001)
mat <- matrix(nrow = 2, ncol = 3, dimnames = list(c("one", "two"), c("house", "tree", "flower")))
vec <- sample.int(10, 5)
names(vec) <- c("one_house", "one_flower", "two_tree", "two_house", "one_tree")

我要找的输出是这样的:

matrix(c(4, 7, 6, 2, 3, NA), nrow = 2, ncol = 3, dimnames = list(c("one", "two"), c("house", "tree", "flower")))

如果有任何帮助,我将不胜感激。

我们可以将向量的names拆分为_,并根据mat

中的行/列名称属性进行赋值。
mat[do.call(rbind, strsplit(names(vec), "_"))] <- vec

与产出

mat
#    house tree flower
#one     7    9      3
#two     8   10     NA

或者,如果我们没有一个数据集来替换,我们可以构建一个data.frame并使用xtabs来重塑数据

xtabs(vec ~ V1 + V2, as.data.frame(do.call(rbind, strsplit(names(vec), "_"))))

最新更新