Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R:Binary matrix for all possible unique results

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.

like image 470
Chandra Avatar asked Jun 25 '13 07:06

Chandra


2 Answers

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
like image 120
agstudy Avatar answered Nov 14 '22 23:11

agstudy


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

like image 27
droopy Avatar answered Nov 14 '22 21:11

droopy