[R] a question of substitute

Gabor Grothendieck ggrothendieck at gmail.com
Tue Jan 9 14:14:13 CET 2007


oneway.test is using substitute on its arguments so its literally
getting formula rather than the value of formula.  Try these:

fun.3 <- function(formula) {
	mc <- match.call()
	mc[[1]] <- as.name("oneway.test")
	eval.parent(mc)
}
fun.3(values ~ group)

fun.4 <- function(formula) {
	do.call(oneway.test, list(formula))
}
fun.4(values ~ group)

On 1/9/07, Adrian Dusa <dusa.adrian at gmail.com> wrote:
>
> Hi all,
>
> I want to write a wrapper for an analysis of variance and I face a curious
> problem. Here are two different wrappers:
>
> fun.1 <- function(formula) {
>    summary(aov(formula))
> }
>
> fun.2 <- function(formula) {
>    oneway.test(formula)
> }
>
> values <- c(15, 8, 17, 7, 26, 12, 8, 11, 16, 9, 16,
>            24, 20, 19, 9, 17, 11, 8, 15, 6, 14)
> group <- rep(1:3, each=7)
>
> # While the first wrapper works just fine:
> fun.1(values ~ group)
>
> # the second throws an error:
> fun.2(values ~ group)
> Error in substitute(formula)[[2]] : object is not subsettable
>
> ###
>
> I also tried binding the two vectors in a data.frame, with no avail.
> I did find a hack, creating two new vectors inside the function and creating a
> fresh formula, so I presume this has something to do with environments.
>
> Could anybody give me a hint on this?
> Thank you,
> Adrian
>
> --
> Adrian Dusa
> Romanian Social Data Archive
> 1, Schitu Magureanu Bd
> 050025 Bucharest sector 5
> Romania
> Tel./Fax: +40 21 3126618 \
>          +40 21 3120210 / int.101
>
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list