[R] Extract lags from a formula
    hadley wickham 
    h.wickham at gmail.com
       
    Fri May  2 20:42:55 CEST 2008
    
    
  
On Fri, May 2, 2008 at 1:35 PM, Kerpel, John <John.Kerpel at infores.com> 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/
    
    
More information about the R-help
mailing list