6

How to generate a binary matrix for all possible permutations of 'i' variables X, where " i " can be any number between 1 and infinite. Resultant matrix will have 2^ i unique rows.

For i=2 , variables x1, x2 each with a possible value of 1 or 0, so the resultant matrix would be:

X1 X2
0 0
0 1
1 0
1 1

Is there any function in R to generate ?

I tried with below function:

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

But the result does not show all possible values.

agstudy
  • 119,832
  • 17
  • 199
  • 261
Chandra
  • 526
  • 2
  • 9
  • 26

3 Answers3

7

you can use expand.grid:

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

More generally, with 5 columns for example, giving 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
agstudy
  • 119,832
  • 17
  • 199
  • 261
  • `expand.grid(lapply(1:n, function(x) c(0, 1)))` can work for a general solution, where `n` is the number of variables. – mickey Mar 30 '22 at 23:01
3

The fonction combos of the package hier.part will do the job I think.

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

Except that you will have to add the "null" combination. HTH

droopy
  • 2,788
  • 1
  • 14
  • 12
0

Try this

i =2
install.packages('gtools')
library(gtools)
permutations(2,i,v=c(0,1),repeats.allowed=TRUE)
Sangram
  • 407
  • 1
  • 6
  • 18