2013-10-15 40 views
1

我想循環訪問一些公司代碼的CSV並下載他們各自的代碼數據。getSymbols()函數可以取代變量本身嗎?

到目前爲止,我已經定義變量「股票」如下:

ticker <- companyList[1, 'Symbol'] 
當我打印「股票」屏幕

,它顯示了1股股票完全正常,但是當我嘗試通過ticker變量轉換爲quantmod的getSymbols函數,我得到一個錯誤。

getSymbols(ticker) 
Error in do.call(paste("getSymbols.", symbol.source, sep = ""), list(Symbols = current.symbols; : 
could not find function "getSymbols.940" 

在我的語法中是否有錯誤?有沒有另外一種方法可以做到這一點?任何書籍推薦?

回答

1

最簡單的方法是指定的環境中,例如假設你有行情的載體,比你能做到以下幾點:

# tickers example 
tik <- c("MMM", "ABT", "ABBV", "ANF", "ACT") 

# new environment 
stockData <- new.env() 

# download data 
getSymbols(tik, env = stockData) 

比你可以索引來訪問的股票:如:

stockData$MMM 

      MMM.Open MMM.High MMM.Low MMM.Close MMM.Volume MMM.Adjusted 
# 2007-01-03 77.53 78.85 77.38  78.26 3781500  65.42 
# 2007-01-04 78.40 78.41 77.45  77.95 2968400  65.16 
# 2007-01-05 77.89 77.90 77.01  77.42 2765200  64.72 
# 2007-01-08 77.42 78.04 76.97  77.59 2434500  64.86 
# 2007-01-09 78.00 78.23 77.44  77.68 1896800  64.93 
# 2007-01-10 77.31 77.96 77.04  77.85 1787500  65.07 

相同的所有其他股票。

也見這裏:Quantmod

心連心

編輯

導出您可以使用這樣的事情:

# this will export 
lapply(stockData, function(x){ 
    write.csv(x, file=paste0(gsub(".Open", "", names(x)[1]), ".csv")) 
    }) 

# the data can be found in the folder (execute the function!!!) 
getwd() 
+0

謝謝你的回答!但我期望循環訪問我的CSV並從CSV中的所有數百個代碼中下載數據。 –

+0

你的CSV是怎樣的? ...一個小例子會有幫助。您應該能夠從CSV中提取股票代碼名稱。比你可以下載相同的數據(你不需要一個循環,R矢量化)。之後,你只需要一個函數來編寫CSV的例如。 'write.table' – holzben

+0

它的結構爲符號名稱。例如,如果我做股票< - companyList [1:5,'Symbol'],然後打印股票代碼,它會顯示所有前5個公司代號。我想將此變量傳遞給getSymbols,但您的示例代碼不適用於我。我不想手動輸入代號。 –

相關問題