You did not supply any executable examples for testing, but perhaps you could benefit by looking at:

?expand.grid
?tapply

Those to split or index your data "for all combinations of factors".

?mapply  # to do the plotting.


On Jun 26, 2009, at 9:54 AM, Lane, Jim wrote:

Hi, All

I have a data frame as follows:

data.class(tapes)
[1] "data.frame"
names(tapes)
[1] "date"    "loc"     "class"    "drp"     "data"    "scratch"
"reclaim" "total"

Date is a date; loc, class and drp are factors; the rest are numerics.
I want to generate separate plots by date for the numeric variables for
all combinations of the factors. I tried to do this as follows:

by(tapes,list(loc,class,drp),plot(date,scratch))
Error in FUN(X[[1L]], ...) : could not find function "FUN"

Welcome to functional programming. Generally with R when you pass arguments, you need to create a function that receives those arguments, unless you happen to know that the proper objects would be coming to plot (and then you would not use "(date, scratch)". Perhaps (ObWAG, untested, complete guesswork) :

by(tapes, list(loc,class,drp), function(x) { with(x, plot(date,scratch))} )

(I generally try tapply() first rather than using by().)

# What gets passed to the function is not named "date" and "scratch" in any case, but is named whatever you use in the function argument list. You need to pull that object apart properly within the function.


As well as the error I get a single plot for all values of scratch and
date which is meaningless. What am I going wrong here?

For clarification what I want would be done is SAS as something like:

An executable example would have been a better way of getting an accurate answer.

--

David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@r-project.org 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.

Reply via email to