Я пытаюсь реплицировать исследование ситуации с запасом из Data Mining с помощью R-книги и пытаюсь поместить часть кода в цикл, чтобы я мог иметь дело с более чем одним запасом , Однако я не могу понять, как заставить функцию defineModel работать внутри цикла. Я хочу рассчитать ряд технических индикаторов для каждого запаса и в конечном итоге использовать случайный лес для выбора наиболее полезных. Ниже приведен пример кода.Использование defineModel из пакета quantmod в цикле
library(quantmod)
# The list of stocks I want to investigate
stock.symbols = c("MMM", "IBM")
# Download daily stock prices to global environment
getSymbols(stock.symbols, src = "yahoo", quotes = c("Open", "High", "Low", "Close", "Volume", "Adjusted"), from = "2011-01-01", to = "2012-01-01")
# "Custom" indicator functions
myAroon = function(x) aroon(Cl(x))[,1]
myADX = function(x) ADX(HLC=x)[,4]
# Try to create quantmod model for each stock
for(i in stock.symbols)
{
my.model = specifyModel(Cl(MMM) ~ myAroon(MMM) + myADX(MMM)) # this line works - looks up MMM in global environment
# my.model = specifyModel(Cl(i) ~ myAroon(i) + myADX(i)) # I would like something like this
}
Я понимаю, что если вы обратитесь к запасу его символом, например, «МММ», specifyModel выглядит его в текущем рабочем пространстве. Я хотел бы знать, как сделать это более общим. На минуту я получаю следующее сообщение об ошибке:
no applicable method for 'as.xts' applied to an object of class "character"
Я пытался идти через документацию для specifyModel, но безрезультатно (это не кажется, наиболее широко используемая функция в мире). Я также попытался использовать get() и as.name(). Я понимаю, что я могу делать что-то совершенно неправильное здесь, поэтому извиняюсь заранее! Любая помощь вообще была бы весьма признательна.
Спасибо! Кажется, это именно то, что я хотел. Я использовал что-то вроде Cl (get (i)), которое, как я полагаю, путало R каким-то образом. Еще раз спасибо за быстрый ответ. – NoneMoreBlack