2016-12-06 59 views
-2

。這是我的代碼如果R.錯誤說法說法是長度爲零

for (i in 101:length(temp[,6])) 
{ 
    if ( temp[i-1,5]< temp[i,5] ) 
    print(temp[i,]) 

} 

溫度是我的數據

 000001.SZ.Open 000001.SZ.High 000001.SZ.Low 000001.SZ.Close 000001.SZ.Volume 000001.SZ.Adjusted 
2016-01-01   11.99   11.99   11.99   11.99    0   9.81595 
2016-01-04   12.00   12.03   11.23   11.33   67619700   9.27563 
2016-01-05   11.27   11.57   11.15   11.40   79592300   9.33293 
2016-01-06   11.42   11.56   11.39   11.53   61884700   9.43936 
2016-01-07   11.41   11.41   10.91   10.94   20971300   8.95634 
2016-01-08   11.21   11.29   10.90   11.12   89703300   9.10370 

看起來是這樣的。我用代碼is.numeric

is.numeric(temp) 
[1] TRUE 

is.null

is.null(temp) 
[1] FALSE 

因此,在「臨時」的所有值都有意義,並能計算出檢查數據。

我得到的結果

Error in if (temp[i - 1, 5] < temp[i, 5]) print(temp[i, ]) : 
    argument is of length zero 

請告訴我在哪裏與此代碼的問題。

+0

這似乎很奇怪的是設置在循環對溫度的'長度[6]'但然後在'溫度操作[5] '。你是否想讓循環限制爲'length(temp [,5])'? – G5W

+0

第5和第6列具有相同數量的觀察值。在將它改爲length(temp [,5])後,它會得到相同的結果 –

+0

您是否真的想要從第101行開始?數據框中您希望有多少行? – Dave2e

回答

0

你必須從xts對象第一提取數據

library(quantmod) 

xts_object <- getSymbols("000001.SZ", from= '2016-1-1', src="yahoo", auto.assign = F) 
temp <- coredata(xts_object) 

for (i in 101:length(temp[,6])) 
{ 
    if ( temp[i-1,5]<temp[i,5] ) 
    print(temp[i,]) 
} 
+0

非常感謝,我非常贊同你的想法。只有第五欄的數據是交易量,其餘欄是股票價格數據。然而第五列對我來說非常重要,我不能簡單地忽略它們。我試圖通過給第五列中的每個值加1來修復它,如:K < - temp [,5] +1。但它仍然給我一個錯誤。你能分享一下你的意見嗎?我可以給你我下載的數據,如果你認爲它會有所幫助的話。 –

+0

是的,請做! – mpjdem

+0

我認爲通過R下載它會很方便,因爲這是我首先下載數據的方式。您只需運行以下代碼: install.packages(「quantmod」) 庫(quantmod) temp < - getSymbols(「000001.SZ」,from ='2016-1-1',src =「yahoo 「,auto.assign = F) –