R 计算较大向量的子向量的最大值

R 计算较大向量的子向量的最大值,r,vector,apply,R,Vector,Apply,我想在长向量的一部分中找到最大的元素。我还想对这个较大向量的多个“片段”执行此计算。下面的代码生成了我想要的结果,但是使用循环似乎效率低下。建议 注意:我并不特别限于使用矢量数据结构来解决这个问题 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.

我想在长向量的一部分中找到最大的元素。我还想对这个较大向量的多个“片段”执行此计算。下面的代码生成了我想要的结果,但是使用循环似乎效率低下。建议

注意:我并不特别限于使用矢量数据结构来解决这个问题

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
这应该可以完成任务

cummax(test.vec)
除了sum、min、max、prod(内置了更高效的例程)之外,一般策略可能是

Reduce(max, test.vec, accumulate = TRUE)

您可能对
cummax
函数感兴趣