6

如何为“i”变量 X 的所有可能排列生成二进制矩阵,其中“i”可以是 1 到无穷大之间的任何数字。结果矩阵将有 2^i 个唯一行。

对于 i=2 ,变量 x1, x2 每个的可能值为 1 或 0,因此生成的矩阵将是:

X1 X2
0 0
0 1
1 0
1 1

R中是否有任何功能可以生成?

我尝试了以下功能:

   matrix(rbinom(160, 1, 0.5),ncol=5,nrow=(2^5))

但结果并未显示所有可能的值。

4

3 回答 3

7

你可以使用expand.grid

 expand.grid(c(0,1),c(0,1))
  Var1 Var2
1    0    0
2    1    0
3    0    1
4    1    1

更一般地,例如 5 列,给出m

m <- as.data.frame(matrix(rbinom(5*2, 1, 0.5),ncol=5))
 V1 V2 V3 V4 V5
1  0  1  1  0  0
2  0  1  1  0  0

dim(expand.grid(m))
32 5
于 2013-06-25T08:06:49.740 回答
3

包 hier.part 的功能组合将完成我认为的工作。

require(hier.part)
combos(2)$binary
     [,1] [,2]
[1,]    1    0
[2,]    0    1
[3,]    1    1

combos(3)$binary
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
[4,]    1    1    0
[5,]    1    0    1
[6,]    0    1    1
[7,]    1    1    1

除了您必须添加“null”组合。高温高压

于 2013-06-25T09:07:17.357 回答
0

尝试这个

i =2
install.packages('gtools')
library(gtools)
permutations(2,i,v=c(0,1),repeats.allowed=TRUE)
于 2015-03-11T06:44:22.920 回答