[Rd] Namespace problem

Martin Maechler maechler at stat.math.ethz.ch
Mon Sep 20 12:26:45 CEST 2004


>>>>> "GB" == Göran Broström <gb at stat.umu.se>
>>>>>     on Mon, 20 Sep 2004 11:00:57 +0200 writes:

    GB> On Mon, Sep 20, 2004 at 10:43:44AM +0200, Martin Maechler wrote:
    >> >>>>> "GB" == Göran Broström <gb at stat.umu.se>
    >> >>>>>     on Sun, 19 Sep 2004 18:51:49 +0200 writes:

    GB> [...]

    GB> I've checked that section, but I am not adding methods to generics, 
    >> 
    >> sure? 
    >> Aren't you trying to export  mlreg.fit
    >> which looks like a 'fit' S3 method for the 'mlreg' generic?

    GB> But it isn't. I just have found '.' to be a convenient separator in
    GB> variable names, since '_' (my C favourite) wasn't available. So what you
    GB> are suggesting

no!! I'm not.

    GB> that I have to change all the variable names with dots in
    GB> them. Or add 'S3metod(...' for each of them. I guess that the former is
    GB> preferable.  

no, really neither should be required.

We do encourage not using "." for new function names because of
the reason above, but it's definitely not a requirement.
In the case where  'foo'  is an S3 generic function name,
we however recommend quite strongly not to use 
   'foo.bar'
as function name since it looks "too much" like an S3 method.
Is this the case for you?

    GB> But how is this problem connected to using C/Fortran code?

only via "namespace magic".

E.g., for packages with namespaces and R 2.0.0, 
 it' will become recommended  to *NOT* use the 'PACKAGE = "foobar"'
 argument to .C(.) or .Fortran() calls because then, the package
 version can be taken into account,
since NEWS for 2.0.0 has

>> C-LEVEL FACILITIES
>> 
>>     o	The PACKAGE argument for .C/.Call/.Fortran/.External can be
>> 	omitted if the call is within code within a package with a
>> 	namespace.  This ensures that the native routine being called
>> 	is found in the DLL of the correct version of the package if
>> 	multiple versions of a package are loaded in the R session.
>> 	Using a namespace and omitting the PACKAGE argument is
>> 	currently the only way to ensure that the correct version is
>> 	used.



More information about the R-devel mailing list