我试图填充一个矩阵的值从一个向量,其中每个值的名称是矩阵的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), "_"))))