[R] Rpart and case weights: working with functions
Xavier Robin
Xavier.Robin at medecine.unige.ch
Tue Jun 3 11:33:06 CEST 2008
I can't get rpart accept case weights defined inside a function.
It keeps using the copy defined in the "global" environment (if they
exists) instead of the function-defined ones.
Here is what I do:
test.function <- function (formula, data) {
weights <- rep(.1, 100)
rpart(formula, data, weights)
}
test.function(x~y, data)
And I get an error:
> Error in model.frame(formula, rownames, variables, varnames, extras, extranames, :
> invalid type (closure) for variable '(weights)'
If I define weights in the global environment, it uses this instead of
the function-defined one (which can be verified by
.Last.value$frame$wt[1]: it should equal sum(weights) and actually
equals the sum of global weights, not the function one).
I tried to pass a named argument (weights=weights), using other names
(w, foo, ...), or both, but still it doesn't work. I found nothing in
rpart doc about that behaviour...
It was tested on R 2.7.0 (Windows XP) and R 2.5.1 (Linux kernel 2.6.9).
For the moment, the only workaround I found is to use/modify the global
weights using <<- (not very satisfying).
What did I wrong? And what should I do to get it work (i.e. using the
copy of weights defined inside the function)?
Thanks in advance for your help.
Xavier Robin
--
Xavier Robin
Biomedical Proteomics Research Group (BPRG)
Department of Structural Biology and Bioinformatics (DBSB)
Geneva University Medical Center (CMU)
1, rue Michel Servet - CH-1211 Genève 4 - Switzerland
Tel: (+41 22) 379 53 21
More information about the R-help
mailing list