2015-04-06 64 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

相關問題