On 13-08-26 12:04 PM, Gavin Simpson wrote:
Right Henrik, but then you have to document it or R CMD check raises a
Warning, which is less likely to pass muster when submitting to CRAN.
So you document that method on your existing method's Rd page (just
via an \alias{}), which is fine until the user does end up attaching
the original source of the method, and then you get the annoying
warnings about masking and `?plot3d` will bring up a dialogue asking
which version of the help you want to read.
Part of me thinks it would be better if there was a mechanism whereby
a generic will just work if package foo imports that generic and
exports a method for it.
Either I am messing up something again (reasonably likely) or it does
just work with S4 methods. I can import the namespace that has the
generic and the methods work, I do not seem to need to export the
generic. Is S3 working differently? I do have the documentation problem
when I try to export other imported functions that I would like
available to users.
Paul
Cheers,
G
On 26 August 2013 09:42, Henrik Bengtsson <h...@biostat.ucsf.edu> wrote:
On Mon, Aug 26, 2013 at 1:28 AM, Martyn Plummer <plumm...@iarc.fr> wrote:
I think rgl should be in Depends. You are providing a method for a
generic function from another package. In order to use your method, you
want the user to be able to call the generic function without scoping
(i.e. without calling rgl::plot3d), so the generic should be on the
search path, so the package that provides it should be listed in Depends
in the NAMESPACE file.
You can re-export an imported object, but it has to be done via an
explicit export(), cf. "It is possible to export variables from a
namespace which it has imported from other namespaces: this has to be
done explicitly and not via exportPattern" [Writing R Extensions].
/H
Martyn
On Fri, 2013-08-23 at 22:01 -0600, Gavin Simpson wrote:
Dear List,
In one of my packages I have an S3 method for the plot3d generic
function from package rgl. I am trying to streamline my Depends
entries but don't know how to have
plot3d(foo)
in the examples section for the plot3d method in my package, without
rgl being in Depends.
Note that I importFrom(rgl, plotd3d) and register my S3 method via
S3Method() in the NAMESPACE.
If rgl is not in Depends but in Imports, I see this when checking the package
## 3D plot of data with curve superimposed
plot3d(aber.pc, abernethy2)
Error: could not find function "plot3d"
I presume this is because rgl's namespace is only loaded but the
package is not attached to the search path.
Writing R extensions indicates that one can export from a namespace
something that was imported from another package namespace. I thought
that might help the situation, and now the code doesn't raise an
error, I get
* checking for missing documentation entries ... WARNING
Undocumented code objects:
‘plot3d’
All user-level objects in a package should have documentation entries.
See the chapter ‘Writing R documentation files’ in the ‘Writing R
Extensions’ manual.
as I don't document plot3d() itself.
What is the recommended combination of Depends and Imports plus
NAMESPACE directives etc that one should use in this situation? Or am
I missing something else?
I have a similar issue with my package including an S3 method for a
generic in the lattice package, so if possible I could get rid of both
of these from Depends if I can solve the above issue.
Thanks in advance.
Gavin
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel