Скажем, я хочу использовать rollapply с функцией, которая возвращает больше, чем значение. Как это:
library(quantmod)
getSymbols("YHOO")
openYHOO <- YHOO[1:10,1]
rollapply(openYHOO, width = 2, range)
Я получаю сообщение об ошибке. Я также попытался объединить результаты внутри функции:
rollapply(openYHOO, width = 2, function(x) {
cbind(range(x))
})
rollapply(openYHOO, width = 2, function(x) {
merge(range(x))
})
Еще ошибки.
Я могу сделать так:
cbind(
rollapply(openYHOO, width = 2, function(x) {
range(x)[1]
}),
rollapply(openYHOO, width = 2, function(x) {
range(x)[2]
})
)
... и это работает.
Однако что, если я хочу вызвать fivenum
или использовать что-то гораздо более сложное и требующее больших вычислительных ресурсов в забавном аргументе? Должен ли я вызывать rollapply для каждого значения, которое я хочу вернуть, создавая один и тот же объект снова и снова?
Я что-то упустил или мне следует отказаться от rollapply и свернуть свою собственную функцию скользящего окна?
Можете объяснить, почему этот rollapply(openYHOO, width = 2, range)
не работает?