【发布时间】:2017-11-06 22:52:07
【问题描述】:
我有两个大型数据框,我想对它们执行元素操作。就我而言,我想基本上对两个具有部分重叠的列名和行名的矩阵进行矩阵加法。
例如:
A <- matrix(rep(1,4),nrow=2)
colnames(A) <- c("a","b")
rownames(A) <- paste("r", seq(1,2,1), sep="")
B <- matrix(rep(10,4),nrow=2)
colnames(A) <- c("b","c")
rownames(B) <- paste("r", seq(2,3,1), sep="")
A
a b
r1 1 1
r2 1 1
B
b c
r2 10 10
r3 10 10
我想将 A+B 按列名和行名相加得到:
>S
a b c
r1 1 1 0
r2 1 11 10
r3 0 10 10
矩阵(或数据框)中的行名和列名仅部分重叠,因此最终矩阵的维度将与单个矩阵不同。在这个玩具示例中,唯一重叠的单元格是 row:b/col:r2。我将空单元格设为 0。
我可以通过重叠行和列对矩阵进行子集化,然后对子矩阵进行排序和添加,最后通过连接不重叠的位来以非常笨拙的方式做到这一点。我的真实数据是具有约 20,000 行(基因)和约 10,000 列(细胞)的基因表达矩阵。
【问题讨论】:
-
您的示例给出了错误。请纠正。此外,您的示例与您所展示的不同。
-
您的代码是
matrix(rep(1,9),nrow=3),但显示不同 -
很抱歉。我修复了示例的代码。