[Rd] (no subject)
Henrik Bengtsson
hb at biostat.ucsf.edu
Sat Sep 21 19:47:53 CEST 2013
Hi, it appears that you've lost the original thread
R-devel thread '"False" warning on "replacing previous import" when
re-exporting identical object' started on 2013-08-29
[https://stat.ethz.ch/pipermail/r-devel/2013-August/067321.html].
(and forgot the subject line), so in order to not start yet another
thread I'll close this one and reply/cc you there.
/Henrik
On Sat, Sep 21, 2013 at 9:44 AM, Ben Bolker <bbolker at gmail.com> wrote:
> Henrik Bengtsson <hb <at> biostat.ucsf.edu> writes:
>
>>
>> On Fri, Aug 30, 2013 at 11:51 AM, Henrik Bengtsson
>> <hb <at> biostat.ucsf.edu> wrote:
>> > Hi.
>
> [snip]
>
> Bump ... Henrik, did you ever post this as a request/wishlist at
> https://bugs.r-project.org/bugzilla3/ ? (I don't think so, I couldn't
> find it there, but maybe I wasn't looking in the right place.) I
> would be curious to know what the response was from R-Core, because
> these kinds of warnings are starting to pop up in the nlme/lme4/
> downstream package complex. In particular,
>
> VarCorr
> fixef
> lmList
> ranef
>
> are defined by nlme, imported and re-exported by lme4. This doesn't
> seem to make any trouble for lme4, but it does cause problems for
> some of the downstream packages (such as GRRGI:
> [broken URL for Gmane]
> http://www.r-project.org/nosvn/R.check/
> r-devel-linux-x86_64-fedora-gcc/GRRGI-00check.html )
>
> (Right now GRRGI uses a pretty crude import-all strategy:
> import(nlme,lme4,...); exportPattern("."); which might be
> tweaked, but I think the issue is still worth resolving.)
>
> In a perfect world, I guess some of these generics would be moved
> upstream to a package that both nlme and lme4 could import from,
> but that seems tricky to do without making fairly major architectural
> changes.
>
> Ben Bolker
>
>
>> > For the record, you're referring to R-devel thread 'Correct NAMESPACE
>> > approach when writing an S3 method for a generic in another package'
>> > started on Aug 24, 2013
>> > [https://stat.ethz.ch/pipermail/r-devel/2013-August/067221.html].
>> > Yes, it's closely related or possibly the same issue. However, I do
>> > not find it odd that the S3 generic function needs to be exported
>> > from/available via the namespace. Hence it needs to be export():ed by
>> > at least one package/namespace.
>> >
>> > The real issue is when two package needs to export a generic function
>> > with the same name, e.g. foo(). If the two generic functions are
>> > defined differently (e.g. different arguments/signatures), they will
>> > be in conflict with each other. If they are identical, this should
>> > not be a problem, but here I might be wrong. However, there is also
>> > the special case where one package reexports the generic function from
>> > another package, e.g. PkgB::foo() exports PkgA:foo(). In this case,
>> > the object 'foo' does actually not existing in the name space of
>> > package PkgB - instead it provides a "redirect" to it, e.g.
>> >
>> >> PkgA::foo
>> > function (...)
>> > UseMethod("foo")
>> > <environment: namespace:PkgA>
>> >
>> >> PkgB::foo
>> > function (...)
>> > UseMethod("foo")
>> > <environment: namespace:PkgA>
>> >
>> >> exists("foo", envir=getNamespace("PkgB"), inherits=FALSE)
>> > [1] FALSE
>> >
>> >> exists("foo", envir=getNamespace("PkgB"), inherits=TRUE)
>> > [1] TRUE
>> >
>> >> identical(PkgB::foo, PkgA::foo)
>> > [1] TRUE
>> >
>> >
>> > The warning on "replacing previous import by 'PkgA::foo' when loading
>> > 'PkgC'" that occurs due to import(PkgA, PkgB) is generated in
>> > base::namespaceImportFrom()
>> > [http://svn.r-project.org/R/trunk/src/library/base/R/namespace.R]
>
>> > Note how there is already code for avoiding "false" warnings on S4
>> > generic function. This is what we'd like to have also for S3 generic
>> > functions, but it's much harder to test for such since they're not
>> > formally defined. However, I'd argue that it is safe to skip the
>> > warning *when the variable to be imported does not actually exist in
>> > the package being imported* (e.g. when just rexported), i.e.
>> >
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list