2015-04-06 65 views
3

我需要生成所有可能的元素为0或1的特定长度的矢量。使用0或1个元素生成一定长度的所有矢量

例如,这里的长度为6,我需要所有的向量:

(0,0,0,0,0,0),(0,0,0,0,0,1),...,(1,1,1,1,1,1) 

搜索的时候,我发现了一种方法,使y以下其中包含64个字符的字符串"000000","000001",...,"111111"的载体,但现在我不知道如何将每个这些字符串转换成相关的向量。

x <- seq(0,2^6-1,1) 
library(R.utils) 
y <- inToBin(x) 

编辑:我想通了,如何做到这一点:努力构建组合的详尽的例子,当

z <- matrix(NA,nrow=length(y),ncol=6) 
for(i in 1:length(y)){ 
    z[i,] <- as.numeric(strsplit(y[i],"")[[1]]) 
} 
+0

使用的短语*“长度为6”*的{0,1}的所有组合。这会帮助你更快地找到正确的功能... – smci 2017-02-22 22:13:42

回答

4

expand gridcombn功能是你首先想到的。在这里,我想你想的expand.grid设施:

str(apply(expand.grid(0:1,0:1,0:1,0:1,0:1,0:1), 1, paste0, collapse="")) 

chr [1:64] "000000" "100000" "010000" "110000" "001000" ... 

但是,也许你真的不希望出现这种情况,只希望

apply(expand.grid(0:1,0:1,0:1,0:1,0:1,0:1), 1, list) 

或者只是:

expand.grid(0:1,0:1,0:1,0:1,0:1,0:1) 
+0

如果你想要它作为一个字符向量,考虑'apply(expand.grid(0:1,0:1,0:1,0:1,0:1 ,0:1),1,as.character)'把它作为字符64 x 6矩阵给你。 – 2015-04-06 00:57:48

+0

第三种方法正是我所需要的,在一行中!我希望我能给你5票! – 2015-04-06 01:06:48

相关问题