在零元素分裂向量

问题描述 投票:0回答:1

我有在R A数字矢量随由零的任意数字分隔的整数区间。例如,通过下式给出:

x = c(0, 0, 1, 2, 3, 0, 0, 1, 2, 0)

我想找到在每个由零分离这些增加的间隔的max() /最后一个元素。对于给定的例子,这将是:

result
[1] 3 2

通过遍历x的元素做这个做这项工作,但似乎相当原始的(如下代码)。由于我是新来的R和不可能想出一个聪明的方法使用cut()split()我会更上一个完美的解决方案升值的建议。谢谢!

x  <-  c(0, 0, 1, 2, 3, 0, 0, 1, 2, 0)
interval_max <- 0
interval_counter <- 0
result <- 0
in_interval = FALSE


for (n in 1:10){
  if (x[n]>0){
    if (in_interval){
      result[interval_counter] <- x[n]
    }
    else {
      interval_counter <-  interval_counter + 1
      result[interval_counter] <- x[n]
      in_interval <- TRUE
    }
  }
  else {
    in_interval <- FALSE
  }
}
r vector split max intervals
1个回答
1
投票

如果你想要的是值,则:

x <- c(0, 0, 1, 2, 3, 0, 0, 1, 2, 0)
x[diff(x) < 0]
# [1] 3 2

当然,这种假设值总是增加,然后重置为零。

© www.soinside.com 2019 - 2024. All rights reserved.