假设有两个矩阵:
A <- B <- diag(3)
> A
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
我想创建一个新的矩阵AB,由A和B的所有可能的行组合而成。期望结果如下:
> AB
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 0 0 1 0 0
[2,] 1 0 0 0 1 0
[3,] 1 0 0 0 0 1
[4,] 0 1 0 1 0 0
[5,] 0 1 0 0 1 0
[6,] 0 1 0 0 0 1
[7,] 0 0 1 1 0 0
[8,] 0 0 1 0 1 0
[9,] 0 0 1 0 0 1
如何高效地完成这项任务?并且这种方法是否可以应用于超过两个矩阵的情况?
data.table::CJ
比expand.grid()
更节省内存。还有另一个包ffbase
,其中有expand.ffgrid()
函数。但是,关于内存问题,我不能确定。您可能需要参考这个问题,提出另一个问题来询问。 - maydin