2011-07-23 36 views
5

我試圖創建從Yahoo獲取符號後提供歷史波動性的函數。但是,當我將輸出傳遞給波動函數時,它不喜歡它; Get變量被賦予一個帶引號的向量,例如「SPY」,但波動率功能只需要不加引號(SPY不是「SPY」)。我試圖把報價關閉使用noquote()現在得到以下錯誤:在日誌在R中解析引號:Quantmod應用程序

錯誤(X):非數值參數數學函數

我的代碼

require(quantmod) 

vClose = function(X){ 
Get <- getSymbols(X, from="2000-01-01", src="yahoo") 
Set <- noquote(Get) 
volatility(Set, calc="close") 
} 

任何幫助將很棒。

回答

1

在您的通話只需設置auto.assign=FALSEgetSymbols

require(quantmod) 
Get <- getSymbols("SPY", from="2000-01-01", auto.assign=FALSE) 
volatility(Get, calc="close") 
2

noquote()不是答案。相反,你想要get()。以下示例適用,但您可能想要更改變量名稱,因爲getGet可能會感到困惑。

require(quantmod) 

vClose = function(X){ 
Get <- getSymbols(X, from="2000-01-01", src="yahoo") 
volatility(get(Get), calc="close") 
} 

vClose("SPY") 
+0

非常感謝!很好的幫助。 – jd8585