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.
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
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
Try this
i =2
install.packages('gtools')
library(gtools)
permutations(2,i,v=c(0,1),repeats.allowed=TRUE)