【问题标题】:Populate R matrix from vector based on combined col- and row-name根据组合的列名和行名从向量填充 R 矩阵
【发布时间】:2021-05-18 17:08:05
【问题描述】:

我正在尝试使用向量中的值填充矩阵,其中每个值的名称是矩阵的列名和行名的组合。

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

对此的任何帮助将不胜感激。

【问题讨论】:

  • 我从你展示的种子中得到不同的价值

标签: r matrix


【解决方案1】:

我们可以将向量的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), "_"))))

【讨论】:

  • 非常感谢您的超快速回复。工作一种享受!
猜你喜欢
  • 1970-01-01
  • 2014-11-20
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多