Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何生成组合矩阵_R_Cross Join - Fatal编程技术网

R 如何生成组合矩阵

R 如何生成组合矩阵,r,cross-join,R,Cross Join,我有5个项目,每个项目的值可以为1或-1。我想生成一个由可能的组合行组成的矩阵。项目的顺序无关紧要,组合的顺序也无关紧要。我知道我可以机械地做到这一点,但我想一定有人知道生成这个矩阵的捷径。如果这与其他问题类似,我深表歉意,但我发现的任何解决方案都不能用我的编程技能来解决这个特定问题。概括格雷格的答案: expand.grid(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1)) N <- 5 vec <- c(-1, 1) lst <

我有5个项目,每个项目的值可以为1或-1。我想生成一个由可能的组合行组成的矩阵。项目的顺序无关紧要,组合的顺序也无关紧要。我知道我可以机械地做到这一点,但我想一定有人知道生成这个矩阵的捷径。如果这与其他问题类似,我深表歉意,但我发现的任何解决方案都不能用我的编程技能来解决这个特定问题。

概括格雷格的答案:

expand.grid(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))
N   <- 5
vec <- c(-1, 1)
lst <- lapply(numeric(N), function(x) vec)
as.matrix(expand.grid(lst))

N来自
数据的备选方案。表
包比
扩展稍快。网格

library(data.table)  
CJ(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))

我认为一个更通用的解决方案是
do.call(CJ,rep(list(c(-1,1)),5))