Skip to content

changing (core) function argument defaults?

6 messages · RenE J.V. Bertin, Tony Plate, Spencer Graves +1 more

#
>From: Patrick Connolly <p.connolly@hortresearch.co.nz>
>To: "RenE J.V. Bertin" <rjvbertin@hotmail.com>
>Subject: Re: [R] changing (core) function argument defaults?
>Date: Thu, 18 Nov 2004 11:43:10 +1300

>
>On Wed, 20-Oct-2004 at 07:48PM +0200, RenE J.V. Bertin wrote:
>
>|> Hello,
>|>
>
>|> Is it possible to change the defaults for the arguments to a
>|> function, without changing the function code itself?  I'm asking
>|> because I'd like to override the default dimensions and font 
family
>|> for a graphics device. Before 2.0.0, I'd just do that with a small
>|> edit in the appropriate .R file containing the device function
>|> definition. I appears to be possible no longer. So rather than
>|> copying the definition into my own .Rprofile, it would be nice if
>|> just the defaults could be modified...
>
>I didn't notice a response to this question.  I'd like to do something
>similar and haven't been able to work out how to do it.
>
>
>best
>
>--
>Patrick Connolly
>HortResearch
>Mt Albert
>Auckland
>New Zealand
>Ph: +64-9 815 4200 x 7188

No, I haven't noticed a reply to this question neither.

Best,
René Bertin
#
Restricted to r-devel (it is almost never appropriate to send the same 
message to both lists).
On Thu, 18 Nov 2004, RenE J.V. Bertin wrote:
You can write a wrapper

X11<-function(display="",width=2,height=2,...){
    grDevices::X11(display,width,height,...)
}

and put that into your Rprofile.

 	-thomas
#
&gt;Restricted to r-devel (it is almost never appropriate to send the
&gt;same message to both lists).

Fine with me!

&gt;X11&lt;-function(display=&quot;&quot;,width=2,height=2,...){
&gt;    grDevices::X11(display,width,height,...)
&gt;}
&gt;
&gt;and put that into your Rprofile.


Great, thanks! Is there documentation from which to find out what to put in 
that wrapper function, for an arbitrary function?

René Bertin
#
Just to add to Thomas Lumley suggestion: it's generally a good idea to call 
a wrapper function it by a different name.  This way, when you forget that 
you have a wrapper function, you won't be puzzled by why the function 
doesn't behave according to the documentation, and you won't embarrass 
yourself by asking other people why there is a bug in R.  Also, if the 
function is called programmatically by other functions, those usages might 
be depending upon the standard defaults being in effect.  So, just do 
something like:

myX11<-function(display="",width=2,height=2,...){
    grDevices::X11(display=display,width=width,height=height,...)
}

-- Tony Plate
#
Under the S3 standard, you could make a local copy of any function 
and change the defaults in that local copy.  That may not always work 
under the S4 standard methods dispatch going to code hidden in 
namespaces.  In any event, it should be easy (and safer) to write a 
function with a slightly different name, e.g., adding a dot "." to the 
end of the name, that would have different defaults and would do nothing 
but call the function of interest.  This might be safer

      I don't have any suggestions about changing graphics defaults 
other than to ask for that specifically -- e.g., by changing the subject 
line to this email. 

      hope this helps.  spencer graves
RenE J.V. Bertin wrote:

            

  
    
#
On Wed, 17 Nov 2004, Tony Plate wrote:

            
This is generally good advice. However, if you want your graphics device 
started automatically when you plot, it either has to have the same name 
as the usual default device or you have to also set 
options(device="myX11")

 	-thomas
Thomas Lumley			Assoc. Professor, Biostatistics
tlumley@u.washington.edu	University of Washington, Seattle