From: Bjørn-Helge Mevik <bhs2_at_mevik.net>

Date: Sat 19 Nov 2005 - 10:03:47 GMT

}

Date: Sat 19 Nov 2005 - 10:03:47 GMT

Hmm.. Maybe I'm overlooking something, but why not use do.call()? For instance

tst <- function(formula, data, na.action = na.omit) {

stopifnot(inherits(formula,"formula"), length(formula) == 3)

## I want to fit a model to those observations that have 'Y > 0' ## where 'Y' is the left-hand-side (LHS) ## The really natural problem is using 'subset'; since I want to keep 'data' intact ## It's really lm(), glm(), gam(), ... but the problem is with model.frame:

cat("subsetting expression: ")

print(substitute(Y > 0, list(Y = formula[[2]])))# is perfect
YY <- formula[[2]]

cat(" or "); print(bquote(.(YY) > 0))

mf <- do.call("model.frame", list(formula = formula, data = data,

subset = bquote(.(YY) > 0), na.action = na.action))mf

}

It seems to work for me:

> mydata <- data.frame(y = rep(c(-1, 1), each = 5), x = rnorm(10))

> tst(y ~ x, data = mydata)

subsetting expression: y > 0

or y > 0

y x

6 1 0.9568283 7 1 0.1166081 8 1 -0.9592458 9 1 -0.0974119 10 1 0.2217222

-- Bjørn-Helge Mevik ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-develReceived on Sat Nov 19 21:15:16 2005

*
This archive was generated by hypermail 2.1.8
: Mon 21 Nov 2005 - 02:21:09 GMT
*