Bill.Venables@CMIS.CSIRO.AU
2001-Jun-11 07:46 UTC
[R] mult.fig() utility [was "margin text mtext"]
Martin, I have an objection in principle to anything that has the side-effect of clobbering something in the global environment, even something as innocuous looking as "old.par". I certainly object to putting something like that into a public library, however clever and useful the code might be. It just is not safe. As a quick way round this I suggest the following (R only) solution: 1. Give the function mult.fig an explicit local environment on definition:> environment(mult.fig) <- new.env()2. Instead of using the superassignment operator, assign the restore list to the local environment of multi.fig (from within multi.fig): assign("old.par", ......, envir = environment(mult.fig)) 3. Provide a special argument to mult.fig so that instead of using par(old.par) to restore the original graphics parameters the user does something like> mult.fig(restore = TRUE)Honour is satisfied. (The S solution would be to call it .old.par and to put it in frame 0.) --- The other suggestion you make is putting things like plotCI into some sort of miscellaneous graphics function library. Not a bad idea, but may I suggest that plotCI should be re-written so that there is a generic function, say CI(), that does the setup and calculations and generates an object of class "CI", which is plotted by the method plot.CI for the plot generic? I think this is a better way of handling it (again in principle). I find to my surprise that I am quoted as the original author of plotCI but I don't think I am. I think all I did was to modify and extend something even more ancient that I seem to recall came from Charles Geyer. We are talking long, long ago now, though... Bill Venables. -----Original Message----- From: Martin Maechler [mailto:maechler at stat.math.ethz.ch] Sent: Monday, 11 June 2001 4:55 PM To: R-help at stat.math.ethz.ch Cc: Christian Hoffmann Subject: [R] mult.fig() utility [was "margin text mtext"] Now that this is solved... The task of setting up a multi-figure plot with a title (and "fixing" mar a bit) is such a common thing that I had designed a utility function for the job, ``back in the time of S-plus'' ;-) and called it mult.fig(). I (and few people here) have been using it for several years now and it may be that it'd be worth to be put into one of those ``misc'' packages {{maybe we should rename ``stepfun'' to ``graphmisc'' and add a few things, including the "plotCI" one?}} Anyway here is the code and the doc: -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._