2013-05-17 178 views
0

我在問一個簡單的問題。爲什麼這兩個代碼片段不一樣?「相同」代碼的不同結果

pNl <- {} 

for(i in length(x):length(x)-250) { 
    temp <-x[i] - x[i-1] 
    pNl <-append(pNl, temp, length(pNl)) 
} 

pNl 

PnL <- {} 

for(i in length(x):(length(x)-250)) { 
    temp <- x[i] - x[i-1] 
    PnL <- append(PnL, temp, length(PnL)) 
} 


PnL 

我得到不同的結果,當我執行他們...

我真的很感謝你的回答!

+0

請讓您的問題具有可重複性,即向我們提供'x'。 –

+0

明顯的錯誤是不明顯的:-) - 這個問題無疑會讓伯恩斯先生高興,因爲他喜歡指出錯誤的代碼如何運行沒有錯誤並且不會產生任何你想要的東西。 –

+0

運算符優先級。 (再次。) –

回答

6

問題出在for循環定義中。在第一循環語句,你都不放過括號,即

#length(x):length(x)-250 
R> 2:5-1 
[1] 1 2 3 4 

在你有括號內的第二循環,所以:

#length(x):(length(x)-250) 
R> 2:(5-1) 
[1] 2 3 4 

這兩句話是不一樣的,所以你不遍歷一樣的東西。

相關問題