#r
#r
Вопрос:
У меня есть данные временных рядов. Я хотел бы применить acf
функцию и отобразить результат для всех столбцов. Я хотел бы также, чтобы график автоматически генерировал заголовок для каждого одномерного ряда.
Я попробовал следующее:
library(quantmod)
library(TSclust)
library(ggplot2)
library(tsibble)
library(vcd)
## Prepare the data
symbols = c('AZN', 'BP', 'AAPL')
## Start and end time
start = as.Date("2015-01-05")
until = as.Date("2015-12-31")
stocks.Cl = lapply(symbols, function(symbol) {
Close = getSymbols(symbol,src='yahoo', from = start, to = until, auto.assign = FALSE)[, 4]
names(Close) = symbol
Close
})
stocks.Cl = do.call(merge.xts,stocks.Cl)
acf.dat <- apply(stocks.Cl, MARGIN= 2, FUN = plot(acf))
Но я получил следующее:
Error in curve(expr = x, from = from, to = to, xlim = xlim, ylab = ylab, :
'expr' did not evaluate to an object of length 'n'
Комментарии:
1.
apply(stocks.Cl, MARGIN= 2, FUN = function(x) plot(acf(x)))
?2. @RonakShah Спасибо. Но как создать заголовок с именем для каждой серии.
Ответ №1:
Вам нужно использовать анонимную функцию, чтобы применить дополнительные функции к переданным объектам. Вместо apply
with MARGIN = 2
мы используем lapply
и повторяем names
of stocks.Cl
, который будет использоваться в качестве заголовка графика.
lapply(names(stocks.Cl), function(i) plot(acf(stocks.Cl[, i]), main = i))
Комментарии:
1. Спасибо, это работает. Однако он генерирует два графика для каждой серии. Один с названием серии, а другой с таким названием: «Запасы серии. Cl[,I]»