Разбор котировок в приложении R: Quantmod

Я пытаюсь создать функцию, которая обеспечивает историческую волатильность после получения символа от Yahoo. Однако, когда я передаю вывод в функцию волатильности, ей это не нравится; Переменной Get назначается вектор с кавычками, например. "SPY", но функция волатильности берет только без кавычек (SPY не "SPY"). Я пытаюсь убрать кавычки с помощью noquote() и теперь получаю следующую ошибку:

Ошибка в журнале (x): нечисловой аргумент математической функции

Мой код

require(quantmod)

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

Любая помощь будет здорово.


person jd8585    schedule 23.07.2011    source источник


Ответы (2)


Просто установите auto.assign=FALSE в своем вызове на getSymbols:

require(quantmod)
Get <- getSymbols("SPY", from="2000-01-01", auto.assign=FALSE)
volatility(Get, calc="close")
person Joshua Ulrich    schedule 23.07.2011

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")
person Henry    schedule 23.07.2011