【发布时间】:2020-06-04 00:35:42
【问题描述】:
所以我有一个包含 17 个矩阵的列表,我想将它们组合成一个主矩阵。但是,我还希望附加而不是覆盖观察的不同值。举个简单的例子,
m1 <- matrix( c(1, 0, 0, 0, 1, 0, 0, 0, 1), nrow=3, ncol=3)
rownames(m1) <- c("x", "y", "z")
colnames(m1) <- c("a", "b", "c")
m2 <- matrix( c(2, 0, 0, 0, 2, 0, 0, 0, 2), nrow=3, ncol=3)
rownames(m2) <- c("a", "d", "e")
colnames(m2) <- c("x", "w", "z")
m3_final <- matrix( c(0, 0, 0, 2, 0, "1;2", 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2), nrow=5, ncol=4)
rownames(m3_final) <- c("a", "b", "c", "d", "e")
colnames(m3_final) <- c("w", "x", "y", "z")
我目前的想法是在列表中运行一个 for 循环,以便从每个矩阵迭代到一个空的主矩阵开始,但我无法将新结果附加到先前的结果。我当前的错误:
m1 <- matrix( c(1, 0, 0, 0, 1, 0, 0, 0, 1), nrow=3, ncol=3)
rownames(m1) <- c("x", "y", "z")
colnames(m1) <- c("a", "b", "c")
m2 <- matrix( c(2, 0, 0, 0, 2, 0, 0, 0, 2), nrow=3, ncol=3)
rownames(m2) <- c("a", "d", "e")
colnames(m2) <- c("x", "w", "z")
m3_final <- matrix( c(0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2), nrow=5, ncol=4)
rownames(m3_final) <- c("a", "b", "c", "d", "e")
colnames(m3_final) <- c("w", "x", "y", "z")
感谢您的帮助!
【问题讨论】:
-
建议使用
dput而不是图像共享数据。请阅读有关how to ask a good question 以及如何提供reproducible example 的信息。 -
谢谢!希望现在有一些代码会更好
-
是的,谢谢,这样更好,但我不明白您在这里要做什么。您正在将 m1 的列名与 m2 的行名进行比较,反之亦然以组合结果?
-
我想做的存储为m3_final。基本上将 m1 和 m2 组合在一起,但是在 a 下 x 有另一个值的情况下,它被附加为“1;2”,而不是被覆盖为 m3_error 中显示的“2”。我正在使用的数据都是字符串,但我认为用数字矩阵表示会更容易
-
a下没有x。可以复查吗?
m1和m2?