【问题标题】:Split the vector into equal height parts将向量分成等高的部分
【发布时间】:2015-03-09 03:55:01
【问题描述】:

我有一个逻辑向量 y,我想将它拆分为 N 部分,这样每个部分都有相同数量的 TRUE 值(我确实不关心有多少 @每个部分都有 987654326@ 值)。具体来说,我想要一个长度为N+1 的整数向量b,这样b[1]=1、b[N+1]=length(y)+1 和abs(sum(y[b[i]:b[i+1])-sum(y)/N)<1。

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

【问题讨论】:

  • 我认为,如果您能真正提供可重现的示例和所需的输出,将会有所帮助。

标签: r


【解决方案1】:
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 中,具体取决于您的数字和您想要的内容。

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 2011-07-19
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多