Dear R-people,
I would like to construct a model frame while keeping eventual NA-s in
it. The code looks like in lm():
m <- match(c("formula", "data", "subset", "weights", "na.action",
"offset"), names(mf), 0)
mfO <- mf[c(1, m)]
mfO$drop.unused.levels <- TRUE
mfO[[1]] <- as.name("model.frame")
names(mfO)[2] <- "formula"
mfO <- eval(mfO, parent.frame())
The problem is that eval() removes all the observation which include
NA-s.
Are there ways to get the frames and keep NA-s? I see, I can play
around with the "na.action" attribute of the resulting frame, but how
can I set the na.action?
Thanks in advance,
Ott
eval while keeping NA-s
2 messages · Ott Toomet, Brian Ripley
On Thu, 18 Jan 2007, Ott Toomet wrote:
Dear R-people,
I would like to construct a model frame while keeping eventual NA-s in
it. The code looks like in lm():
m <- match(c("formula", "data", "subset", "weights", "na.action",
"offset"), names(mf), 0)
mfO <- mf[c(1, m)]
mfO$drop.unused.levels <- TRUE
mfO[[1]] <- as.name("model.frame")
names(mfO)[2] <- "formula"
mfO <- eval(mfO, parent.frame())
The problem is that eval() removes all the observation which include
NA-s.
Are there ways to get the frames and keep NA-s? I see, I can play
around with the "na.action" attribute of the resulting frame, but how
can I set the na.action?
Set na.action=na.pass on the call, or reset in your code (as that resets drop.unused.levels).
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