相关疑难解决方法(0)

创建长度为n的二进制向量的0,1或2"1"的所有可能组合

我想创建一个长度为二进制向量的所有可能组合,以及行中n > 2最大数量为1s 的属性2.

例如:

如果n=4,答案是:

0 0 0 0 
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
1 0 0 0
1 0 0 1
1 0 1 0
1 1 0 0
Run Code Online (Sandbox Code Playgroud)

这有效,但随着n变大(n> 20),内存非常密集且速度很慢:

n <- 4
m <- expand.grid(rep(list(0:1),n))
m <- m[rowSums(m)<3,]
Run Code Online (Sandbox Code Playgroud)

我怎样才能更有效地做到这一点?

答案:
*基于Marat Talipov和akrun解决方案的组合

n=4
z=rep(0,n)
rbind(unname(z), t(combn(0:n,2, FUN=function(k) {z[k]=1;z})))
Run Code Online (Sandbox Code Playgroud)

r

10
推荐指数
1
解决办法
1486
查看次数

标签 统计

r ×1