[R] error using by, Error in tapply(response, list(x.factor, trace.factor), fun) : argument "trace.factor" is missing, with no default
Rolf Turner
r.turner at auckland.ac.nz
Mon Apr 20 00:22:41 CEST 2015
On 20/04/15 01:44, John Sorkin wrote:
>
>
> I am receiving an error message from the by function that I don't understand:
> Error in tapply(response, list(x.factor, trace.factor), fun) :
> argument "trace.factor" is missing, with no default
>
>
>
> My code follows:
>
>
>> summary(ipd)
> group values time subjects weaned disp
> 1:55 Min. :0.0000 Min. :0 Min. :115.0 1:65 2:45
> 2:35 1st Qu.:0.1950 1st Qu.:1 1st Qu.:121.0 2:25 3: 5
> Median :0.3400 Median :2 Median :126.0 4:20
> Mean :0.3479 Mean :2 Mean :127.6 5:20
> 3rd Qu.:0.5000 3rd Qu.:3 3rd Qu.:134.0
> Max. :0.7300 Max. :4 Max. :144.0
> NA's :48
>> by(ipd[,c("time","subjects","values")],ipd[,"group"],interaction.plot)
> Error in tapply(response, list(x.factor, trace.factor), fun) :
> argument "trace.factor" is missing, with no default
<SNIP>
The error is not from tapply(), it is from interaction.plot(). You
cannot supply a dataframe to this function, you must supply the three
arguments x.factor, trace.factor and response.
You could do:
by(ipd[,c("time","subjects","values")],ipd[,"group"],
function(x){names(x) <- c("x.factor","trace.factor",
"response");
do.call(interaction.plot,x)})
There are several other ways of organizing the syntax, but somehow you
have to make the arguments to interaction.plot() explicit.
I was somewhat surprised to find that do.call() does not work with
positional matching of arguments. I.e.
by(ipd[,c("time","subjects","values")],ipd[,"group"],
function(x){do.call(interaction.plot,x)})
does *not* work. The names of "x" have to match the names of the
arguments to interaction.plot().
I'm sure this makes sense .... but I don't understand it.
cheers,
Rolf Turner
--
Rolf Turner
Technical Editor ANZJS
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276
Home phone: +64-9-480-4619
More information about the R-help
mailing list