2012-12-30 64 views
0

如果有兩個向量,說xy尋找沒有循環的最大兩個向量?

for (i in 1:length(x)) 
    z[i] = max(x[i],y[i]) 

你能不能幫我做一下而不使用循環?

+0

不要忘記考慮點擊「接受」的答案,令人滿意地回答你的問題... –

+0

相關:[計算一對向量的最小值](http://stackoverflow.com/q/7770535/ 271616) –

+0

這記錄在'?max'中。 –

回答

13

假設載體xy的長度相同,則pmax是您的函數。

z = pmax(x, y) 

如果長度不同,由於回收,pmax表達式將返回與循環不同的值。

+0

當然可以。非常感謝。 –

2

爲了完整起見,我包括使用apply的解決方案:

Z = cbind(x,y) 
apply(Z, 1, max) 

我不知道不同的解決方案是如何在速度方面的比較,但是,@JevgenijsStrigins,你可以很容易地檢查。

+1

'apply'很可能比'pmax'慢得多... –

+0

我同意,但我加了'apply',因爲它在它可以應用的功能方面更加靈活。 –

+1

當然。 '庫(基準); set.seed(101); x < - runif(1000); y < - runif(1000);基準(apply(cbind(x,y),1,max),pmax(x,y))'表明'pmax'大約快40倍(不知道cbind()的成本是多少, ') –