合并两个矩阵

时间:2014-06-25 13:27:40

标签: r matrix

我已经对这个结果进行了一些挖掘,但是这里的大多数问题都有关于cbind函数和基本矩阵连接的信息。我想做的事情有点复杂。

让我们说,例如,我有一个NxM矩阵,其第一列是每行的唯一标识符(幸运的是,在这种情况下,按该标识符排序)。由于这个查询无关紧要的原因,我将这个矩阵的行分成(n_i)xM矩阵,使得n_i = N的总和。

我打算对每个子矩阵进行单独的分析,然后再将数据与唯一标识符的使用结合起来。

一个例子: 我们假设我的矩阵data为10xM。分手后,我将收到matrices subdata1和subdata2。如果你要查看矩阵的内容:

data[,1] = 1:10
subdata1[,1] = c(1,3,4,6,7)
subdata2[,1] = c(2,5,8,9,10)

然后我操纵subdata1subdata2的列,但保留第一列中的信息。我想再次合并这些矩阵,finaldata[,1] = 1:10,其中finaldata是组合的结果。

我现在意识到我可以使用rbind和矩阵的排序,但是对于效率非常低的大型矩阵。

我知道R在数据管理方面有一些很棒的功能,有没有解决这个问题的方法呢?

2 个答案:

答案 0 :(得分:0)

我可能不完全理解您的问题,但作为一般用法的示例,我通常会将矩阵转换为数据帧,然后执行以下操作:

combi <- rbind(dataframe1, dataframe2)

答案 1 :(得分:0)

如果您知道它们是矩阵,则可以使用多维数组执行此操作:

X <- matrix(1:100, 10,10)
s1 <- X[seq(1, 9,2), ]
s2 <- X[seq(2,10,2), ]
XX <- array(NA, dim=c(2,5,10) )
XX[1, ,] <- s1 #Note two commas, as it's a 3D array
XX[2, ,] <- s2
dim(XX) <- c(10,10)
XX

这会将s1s2的每个元素复制到数组的相应切片中,然后删除额外的维度。有rbind实际上更快的机会,但这样你就不需要重新排序了。

警告:此方法需要大小相等的分割。