如何在R中枚举矩阵中的所有组合?

如何在R中枚举矩阵中的所有组合?,r,matrix,combinations,R,Matrix,Combinations,我试图构造一个包含所有可能组合的矩阵。比如说, a=(1:2)^3 #=c(1,8) b=(1:3)^2 #=c(1,4,9) 我想定义c,c=c1+1,1+4,1+9,8+1,8+4,8+9。我从前面的问题中学到了如何从外部函数得到这样一个c。我现在的问题是,如何得到矩阵M,如下所示: 提前谢谢 我们可以将expand.grid与外部 在哪里 outer(a, b, "+") #gives # [,1] [,2] [,3] #[1,] 2 5 10 #[2,]

我试图构造一个包含所有可能组合的矩阵。比如说,

a=(1:2)^3 #=c(1,8)
b=(1:3)^2 #=c(1,4,9)
我想定义c,c=c1+1,1+4,1+9,8+1,8+4,8+9。我从前面的问题中学到了如何从外部函数得到这样一个c。我现在的问题是,如何得到矩阵M,如下所示:

提前谢谢

我们可以将expand.grid与外部

在哪里

outer(a, b, "+") #gives

#     [,1] [,2] [,3]
#[1,]    2    5   10
#[2,]    9   12   17
我们可以将expand.grid与外部

在哪里

outer(a, b, "+") #gives

#     [,1] [,2] [,3]
#[1,]    2    5   10
#[2,]    9   12   17
好的,给你:

z <- outer(b, a, "+")
cbind(a[col(z)], b[row(z)], c(z))
#     [,1] [,2] [,3]
#[1,]    1    1    2
#[2,]    1    4    5
#[3,]    1    9   10
#[4,]    8    1    9
#[5,]    8    4   12
#[6,]    8    9   17
在这种情况下,结果是数据帧而不是矩阵。

好的,这里是:

z <- outer(b, a, "+")
cbind(a[col(z)], b[row(z)], c(z))
#     [,1] [,2] [,3]
#[1,]    1    1    2
#[2,]    1    4    5
#[3,]    1    9   10
#[4,]    8    1    9
#[5,]    8    4   12
#[6,]    8    9   17
在这种情况下,结果是数据帧而不是矩阵。

或者另一个选项是CJ

或者另一个选项是CJ

library(data.table)
CJ(a, b)[, C := V1 + V2][]
#.  V1 V2  C
#1:  1  1  2
#2:  1  4  5
#3:  1  9 10
#4:  8  1  9
#5:  8  4 12
#6:  8  9 17