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.

Reply via email to