Я хочу использовать объект временного ряда (потому что позже я хочу использовать lag ()), но я не могу указать объект временного ряда в функции:
С помощью data.frame это делаетне имеет значения, кодирую ли я
dat=data.frame(x=c(1,2,3,4,5,6))
sum(2*dat[,"x"])
[1] 42
или альтернативно
with(dat,sum(2*x))
[1] 42
Но как только я преобразую data.frame в объект временного ряда, функция больше не работает.
dat=data.frame(x=c(1,2,3,4,5,6))
dat <- ts(dat)
sum(2*dat[,"x"])
[1] 42
, так что это все еще работает, но
with(dat,sum(2*x))
теперь приводит к
Error in eval(substitute(expr), data, enclos = parent.frame()) :
numeric 'envir' arg not of length one
Или, другими словами: с объектом ts я не могу использоватьлюбые функции, такие как
testy <- function(data,par){
with(data,sum(par * x))
}
sapply(data=dat,2,testy)
без этой ошибки «числовой« envir »аргумент не одной длины», тогда как df-объекты не вызывают эту ошибку.Но позже мне понадобится ts () для функции lag ().
Что я могу сделать, чтобы использовать объекты временных рядов внутри функции?