将矢量分成相等高度的部分

时间:2015-03-05 19:55:26

标签: r

我有一个逻辑向量y,我想将其拆分为N部分,以便每个部分都有相同数量的TRUE值(我关心每个部分中有多少FALSE个值)。具体来说,我想要一个长度为b的整数向量N+1,以便b[1]=1b[N+1]=length(y)+1abs(sum(y[b[i]:b[i+1])-sum(y)/N)<1

算法很简单(在循环中使用cumsumwhich)但我想避免循环。

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,具体取决于您的数字和您想要的内容。