model.frame mangles time series (PR#121)

Peter Dalgaard BSA
18 Feb 1999 17:51:01 +0100

Thomas Lumley <> writes:

> This is the attributes/subsetting problem rearing its ugly head again.
> model.frame(,subset) has to copy *some* attributes over (eg contrasts) and
> can't copy *all* of them (eg dim).
> Currently we use copyMostAttributes to drop the dangerous ones. It
> clearly didn't know about tsp. 
> Questions:
> (1) How do we know which attributes to copy?
> (2) For an unknown attribute what should the default be?
> (3) Is there just one set of attributes that needs special treatment (in
> which case copyMostAttributes is broken) or are there different sets in
> different circumstances (in which case we need a new function)?
> (4) Could we just handle this by having the subset operator retain
> attributes?

(5) is there really any reason to do subsetting in the .Internal code?
the hot spot is 

    variables <- eval(attr(formula, "variables"), data, sys.frame(sys.parent()))
    extranames <- as.character(substitute(list(...))[-1])
    extras <- substitute(list(...))
    extras <- eval(extras, data, sys.frame(sys.parent()))
    subset <- eval(substitute(subset), data, sys.frame(sys.parent()))
    data <- .Internal(model.frame(formula, rownames, variables, 
        varnames, extras, extranames, subset, na.action))

but what's keeping us from saying 
    data <- .Internal(model.frame(formula, rownames, variables, 
        varnames, extras, extranames, na.action))[subset,]

or ("Uncle Scrooge" version)

   data <- .Internal(model.frame(formula, rownames, variables[subset,], 
        varnames, extras[subset,], extranames, na.action))

(well, variables and extras are lists, not dataframes, but you get the
picture. Do we allow unequal length variables anyway?)

(6) since [subset,] seems to work, perhaps do_subset is what should be
called from inside do_modelframe?

   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (             FAX: (+45) 35327907
r-devel mailing list -- Read
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: