如何在R中具有可变大小的块上分割向量?

时间:2019-05-08 19:15:44

标签: r

让我们看看示例

有100个观测日期的向量

 x <- 1:100

我想将其拆分为与原始数据百分比有关的块(“ sum”应为“ 1”)。

  p <- c(30, 25, 20, 15, 10)
  sum(p)

“ p”是原始数据的百分比(30%等)

所需的输出是大小可变的观测数据块

 result <- list(list(1:30), list(31:55), list(56:75), list(76:90), list(91:100))

当第一个块的大小大于下一个块的大小时,这对于并行处理很有用。

1 个答案:

答案 0 :(得分:0)

我们可以使用split

result1 <- lapply(unname(split(x, rep(seq_along(p), p))), function(x) list(x))
identical(result, result1)
#[1] TRUE

或带有Map

的另一个选项
Map(function(x, y) list(x:y), c(1, cumsum(p)[-length(p)]+1), cumsum(p) )