如何为所有可能的二进制矩阵生成 '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))
但结果并未显示所有可能的值。
答案 0 :(得分:4)
您可以使用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
答案 1 :(得分:2)
包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”组合。 HTH
答案 2 :(得分:0)
试试这个
i =2
install.packages('gtools')
library(gtools)
permutations(2,i,v=c(0,1),repeats.allowed=TRUE)