gpt4 book ai didi

r - 创建二进制向量的组合

转载 作者:行者123 更新时间:2023-12-04 12:25:21 25 4
gpt4 key购买 nike

我想创建由固定数字0和1构成的二进制矢量的所有可能组合。例如:
dim(v)= 5x1; n1 = 3; n0 = 2;
在这种情况下,我想要类似以下内容:

  1,1,1,0,0
1,1,0,1,0
1,1,0,0,1
1,0,1,1,0
1,0,1,0,1
1,0,0,1,1
0,1,1,1,0
0,1,1,0,1
0,1,0,1,1
0,0,1,1,1

我找到了一些帮助阅读这篇文章
Create all possible combiations of 0,1, or 2 "1"s of a binary vector of length n
但我只想生成需要避免空间浪费的组合(我认为问题将随着n呈指数增长)

最佳答案

Marat的答案稍快一些:

f.roland <- function(n, m) {
ind <- combn(seq_len(n), m)
ind <- t(ind) + (seq_len(ncol(ind)) - 1) * n
res <- rep(0, nrow(ind) * n)
res[ind] <- 1
matrix(res, ncol = n, nrow = nrow(ind), byrow = TRUE)
}

all.equal(f.2(16, 8), f.roland(16, 8))
#[1] TRUE
library(rbenchmark)
benchmark(f(16,8),f.2(16,8),f.roland(16,8))

# test replications elapsed relative user.self sys.self user.child sys.child
#2 f.2(16, 8) 100 5.693 1.931 5.670 0.020 0 0
#3 f.roland(16, 8) 100 2.948 1.000 2.929 0.017 0 0
#1 f(16, 8) 100 8.287 2.811 8.214 0.066 0 0

关于r - 创建二进制向量的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28368072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com