On Fri, May 2, 2008 at 1:35 PM, Kerpel, John <[EMAIL PROTECTED]> wrote: > Hi folks! > > > > How do I extract lags from a formula? An example: > > > > mod.eq<-formula(x~lag(x,-1)+lag(x,-2)) > > > mod.eq > > x ~ lag(x, -1) + lag(x, -2) > > > mod.eq[1] > > "~"() > > > mod.eq[2] > > x() > > > mod.eq[3] > > lag(x, -1) + lag(x, -2)() > > > > I'm trying to extract the lags into a vector that would be simply [1,2]. > How do I do this? I'm using the dyn package to do dynamic regression.
Maybe something like: f <- formula(x~lag(x,-1)+lag(x,-2)) lags <- function(x) { if (length(x) != 3) return() if (x[[1]] == as.name("lag")) { return(eval(x[[3]])) } else { return(c(lags(x[[2]]), lags(x[[3]]))) } } R expressions are preorder trees. Hadley -- http://had.co.nz/ ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.