假设我有一个向量
x <- c(300, 320, 342, 355, 399, 453, 500, 532, 2, 3, 4, 5, 100, 300, 500, 550, 2, 3)
正如你所看到的,它有一些增加的值,然后值减少,然后再增加,依此类推。
第一个递减的点是值532,然后是值2。所以,在这一点上,我想把值2加到532,所以我现在有了534。然后把值3加到534,然后是值4,然后是值5,依此类推。
所以,我求和第一次最大值出现后的值,也就是532。
所以,我的结果是:
300, 320, 342, 355, 399, 453, 500, 532, 534, 537, 541, 546, 646, 964, 1446, 1996, 1998 , 2001
我正在尝试:
MY_FUNC <- function(Values)
{
Values <- Values[!is.na(Values)]
max_val = 0
index = 0;
for (i in 1:length(Values))
{
if (Values[i] > max_val)
{
max_val = Values[i]
index = i;
#break when first occurence found
}
}
new_vec <- Values[index] + cumsum(Values[(index + 1):length(Values)])
new_vec
}
x <- c(300, 320, 342, 355, 399, 453, 500, 532, 2, 3, 4, 5, 100, 300, 500, 550, 2, 3)
MY_FUNC(x)
但我不知道如何找到循环的第一个最大值出现和中断。