我已经对这个结果进行了一些挖掘,但是这里的大多数问题都有关于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)
然后我操纵subdata1
和subdata2
的列,但保留第一列中的信息。我想再次合并这些矩阵,finaldata[,1] = 1:10
,其中finaldata
是组合的结果。
我现在意识到我可以使用rbind
和矩阵的排序,但是对于效率非常低的大型矩阵。
我知道R在数据管理方面有一些很棒的功能,有没有解决这个问题的方法呢?
答案 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
这会将s1
和s2
的每个元素复制到数组的相应切片中,然后删除额外的维度。有rbind
实际上更快的机会,但这样你就不需要重新排序了。
警告:此方法需要大小相等的分割。