我有在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
}
}
如果你想要的是值,则:
x <- c(0, 0, 1, 2, 3, 0, 0, 1, 2, 0)
x[diff(x) < 0]
# [1] 3 2
当然,这种假设值总是增加,然后重置为零。