[R] Caution on the use of model.matrix.

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Jun 2 17:07:07 CEST 2005


On Thu, 2 Jun 2005, Dimitris Rizopoulos wrote:

> I think you could bit that using (inside your function) something like this
>
> old.o <- options(na.action = na.fail)
> # old.o <- options(na.action = na.pass)
> on.exit(old.o)

You can.  But the real problem is more likely that Rolf has not passed 
model.matrix a model frame, so it calls model.frame() internally.  The 
help page is a bit confused in that it says

     data: a data frame created with 'model.frame'.

which the default for the argument is not.  So a better solution would 
then be to call model.frame and pass a model frame to model.matrix.

delete.response() might also be useful.

The suggested warning only applies if `data' is not supplied.

> ----- Original Message ----- From: "Rolf Turner" <rolf at math.unb.ca>
> To: <r-help at stat.math.ethz.ch>
> Sent: Thursday, June 02, 2005 4:14 PM
> Subject: [R] Caution on the use of model.matrix.
>
>
>> I have just been bitten by a quirk in the behaviour of model.matrix.
>> I used model.matrix inside a function, and passed to it a formula
>> that was built elsewhere.
>> 
>> The formula was of the form ``y ~ x + w + z''.  Now, model.matrix
>> cheerfully accepts formulae of this form, although it only
>> ***needs*** the right hand side, i.e. ``~ x + w + z'' --- the ``y''
>> can be dropped (but in general needn't be).
>> 
>> The quirk by which I was bitten was that if the y column of the data
>> frame being used contains missing values, then the corresponding rows
>> are dropped (silently) and the resulting design matrix has rows
>> corresponding only to the non-missing values of y.  This was not the
>> desired behaviour in my application.
>> 
>> Might I respectfully suggest to R Core that a WARNING be added to the
>> help for model.matrix to the effect that
>> 
>> model.matrix(y~x + w + z,XXX)
>> and
>> model.matrix(~x + w + z,XXX)
>> 
>> give DIFFERENT results if the column ``y'' of the data frame XXX
>> contains missing values?
>> 
>> cheers,
>> 
>> Rolf Turner
>> rolf at math.unb.ca
>> 
>> ______________________________________________
>> R-help at stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide! 
>> http://www.R-project.org/posting-guide.html
>> 
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list