2014-07-22 52 views
1

我想找到一個較長向量的一部分中的最大元素。我也想對這個更大的向量的多個'部分'執行這個計算。下面的代碼產生我正在尋找的結果,但是使用循環似乎效率低下。建議?計算較大向量的子向量的最大值

注意:我並不特別限於使用向量數據結構來解決此問題。

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

這應該做的工作

cummax(test.vec) 

此外總和,最小值,最大值,督促,對於哪一種更有效的例程是內置的,一般的策略可能是

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

你可能會對cummax功能感興趣。