问题
I would like to find the largest element in a portion of a longer vector. I would also like to perform this calculation for multiple 'pieces' of this larger vector. The following code produces the result I am looking for, but it seems inefficient to use a loop. Suggestions?
Note: I am not specifically limited to using the vector data structure to solve this problem.
test.vec = as.vector(c(1,2,4,3,2,3,4,5,4,3,4,5))
output.vec = vector(mode = 'numeric', length = length(test.vec))
for(i in 1:length(test.vec)){
output.vec[i] = max(test.vec[1:i])
}
output.vec = 1, 2, 4, 4, 4, 4, 4, 5, 5 ,5 ,5 ,5 #Result of the loop
回答1:
This should do the job
cummax(test.vec)
Besides sum, min, max, prod, for which a more efficient routine is built-in, the general strategy might be
Reduce(max, test.vec, accumulate = TRUE)
回答2:
You might be interested in the cummax function.
来源:https://stackoverflow.com/questions/24885964/calculating-the-maximum-of-sub-vectors-of-a-larger-vector