Hello everyone Suppose I have an S3 class "dog" and a function plot.dog() which looks like this: plot.dog <- function(x,show.uncertainty, ...){ <do a simple plot> if (show.uncertainty){ <perform complicated combinatorial stuff that takes 20 minutes and superimpose the results on the simple plot> } } I think that it would be better to somehow precalculate the uncertainty stuff and plot it separately. How best to do this in the context of an S3 method for plot()? What is Best Practice here? -- Robin Hankin Uncertainty Analyst National Oceanography Centre, Southampton European Way, Southampton SO14 3ZH, UK tel 023-8059-7743
Robin Hankin <r.hankin at noc.soton.ac.uk> writes:> Hello everyone > > Suppose I have an S3 class "dog" and a function plot.dog() which > looks like this: > > plot.dog <- function(x,show.uncertainty, ...){ > <do a simple plot> > if (show.uncertainty){ > <perform complicated combinatorial stuff that takes 20 minutes > and superimpose the results on the simple plot> > } > }How uncertain is the dog in the window?> I think that it would be better to somehow precalculate the > uncertainty stuff and plot it separately. > > How best to do this > in the context of an S3 method for plot()?Doing long computations within plot functions can be annoying because often one needs to "tweak" the visual style of a plot and this requires numerous round trips. So I like your idea of precomputing the uncertainty stuff. uncertainty.dog could return data that could then optionally be passed into the plot method. Another possibility is that the dog "class" could store the uncertainty data and then the plot method would plot it if it is there (and/or if an option to plot is given). In this case, I guess it would be: x <- addUncertainty(x) + seth