我有一个逻辑向量y
,我想将其拆分为N
部分,以便每个部分都有相同数量的TRUE
值(我不关心每个部分中有多少FALSE
个值)。具体来说,我想要一个长度为b
的整数向量N+1
,以便b[1]=1
,b[N+1]=length(y)+1
和abs(sum(y[b[i]:b[i+1])-sum(y)/N)<1
。
答案 0 :(得分:2)
set.seed(1)
x = sample(c(T,F), 20, T)
#[1] TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE FALSE TRUE
#[17] FALSE FALSE TRUE FALSE
N = 3
y = which(x)
y[seq(1, length(y), by = length(y)/N)]
#[1] 1 10 14
或许在seq
中另外包裹round
,具体取决于您的数字和您想要的内容。