如何在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