5

我正在尝试创建从雅虎获取符号后提供历史波动率的函数。但是,当我将输出传递给波动率函数时,它不喜欢它;Get 变量被分配了一个带引号的向量,例如“SPY”,但波动函数只需要不带引号(SPY 没有“SPY”)。我尝试使用 noquote() 取消引号,现在出现以下错误:

log(x) 中的错误:数学函数的非数字参数

我的代码

require(quantmod)

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

任何帮助都会很棒。

4

2 回答 2

2

noquote()不是答案。相反,你想要get(). 以下示例有效,但您可能希望将变量名称更改为get并且Get可能会感到困惑。

require(quantmod)

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

vClose("SPY")
于 2011-07-23T18:16:19.357 回答
1

只需auto.assign=FALSE在您的电话中设置getSymbols

require(quantmod)
Get <- getSymbols("SPY", from="2000-01-01", auto.assign=FALSE)
volatility(Get, calc="close")
于 2011-07-23T19:16:41.433 回答