我在R中有一个数字矢量,其中间隔为整数递增,间隔为任意零。示例:
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
}
}
答案 0 :(得分:1)
如果只需要这些值,则:
x <- c(0, 0, 1, 2, 3, 0, 0, 1, 2, 0)
x[diff(x) < 0]
# [1] 3 2
在此过程中,假设值始终在增加,然后重置为零。