生成所有长度为0或1元素的向量。

3

我需要生成所有长度为特定值的由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]])
}

使用的短语是“长度为6的{0,1}所有组合”。这将帮助您更快地找到正确的函数... - smci
1个回答

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)

如果您想将其作为字符向量,请考虑使用 apply(expand.grid(0:1,0:1,0:1,0:1,0:1,0:1), 1, as.character),它会将其作为一个字符64 x 6矩阵给出。 - IRTFM
第三种方法正是我所需要的,而且只需一行代码!真希望我能为你点赞五次! - Trang Q. Nguyen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接