exporting methods/classes

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

exporting methods/classes

Erin Hodgess
Dear R People:

I'm still struggling with sending methods and classes as part of
creating a new package.

Where does the .onLoad function go?  Within R itself or in a file
in one of the new package directories?


Here are my latest efforts:


Here's the last part of the woof1-Ex.Rout

> library('woof1')
Error in loadNamespace(package, c(which.lib.loc, lib.loc),
keep.source = keep.source) :
        in 'woof1' classes for export not defined: dog
Error: package/namespace load failed for 'woof1'
Execution halted



Here's the NAMESPACE
importFrom(graphics,plot)
exportClasses("dog")
exportMethods("plot","show")


thanks yet again,
Sincerely,
Erin
mailto: [hidden email]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Reply | Threaded
Open this post in threaded view
|

Re: exporting methods/classes

Uwe Ligges
Erin Hodgess wrote:

> Dear R People:
>
> I'm still struggling with sending methods and classes as part of
> creating a new package.
>
> Where does the .onLoad function go?  Within R itself or in a file
> in one of the new package directories?

Simply save the .onLoad function in some .R file (e.g. zzz.R) in the
package's ./R directory.



> Here are my latest efforts:
>
>
> Here's the last part of the woof1-Ex.Rout
>
>
>>library('woof1')
>
> Error in loadNamespace(package, c(which.lib.loc, lib.loc),
> keep.source = keep.source) :
> in 'woof1' classes for export not defined: dog
> Error: package/namespace load failed for 'woof1'
> Execution halted

So this looks like you have defined S4 classes for export in your
Namespace but you have no call that starts with

setClass("dog", ......

in the R code in your package, hence the class "dog" is undefined.


> Here's the NAMESPACE
> importFrom(graphics,plot)
> exportClasses("dog")
> exportMethods("plot","show")


You don't export any other functions?


Uwe Ligges




>
> thanks yet again,
> Sincerely,
> Erin
> mailto: [hidden email]
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Reply | Threaded
Open this post in threaded view
|

Re: exporting methods/classes

Jean-Christophe BOUËTTÉ
In reply to this post by Erin Hodgess
> ---------- Message transféré ----------
> From: Uwe Ligges <[hidden email]>
> To: Erin Hodgess <[hidden email]>
> Date: Sun, 08 Jan 2006 15:09:06 +0100
> Subject: Re: [R] exporting methods/classes
> Erin Hodgess wrote:
>
> > Dear R People:
> >
> > I'm still struggling with sending methods and classes as part of
> > creating a new package.
> >
> > Where does the .onLoad function go?  Within R itself or in a file
> > in one of the new package directories?
>
> Simply save the .onLoad function in some .R file (e.g. zzz.R) in the
> package's ./R directory.
>
>
>
> > Here are my latest efforts:
> >
> >
> > Here's the last part of the woof1-Ex.Rout
> >
> >
> >>library('woof1')
> >
> > Error in loadNamespace(package, c(which.lib.loc, lib.loc),
> > keep.source = keep.source) :
> >       in 'woof1' classes for export not defined: dog
> > Error: package/namespace load failed for 'woof1'
> > Execution halted
>
> So this looks like you have defined S4 classes for export in your
> Namespace but you have no call that starts with
>
> setClass("dog", ......
>
Well, it's not that easy for a newbie (like me) to track that problem.
Using package.skeleton() (on my old R 2.1.1) puts all the function
definitions in the ./R subdirectory, but not the call to setClass (or
did I make something wrong?). Maybe it's one of the things that should
be documented to make package creation easier. Of course, I know
somebody will point me to some doc where it is stated but the fact is
that it was not obvious.

By the way, I'd like to thank Uwe Ligges and Duncan Murdoch for the
helpful article in R-Help 5/2, it was really useful to me. If I manage
to understand all the steps necessary to make an S4 namespace package
I promise to write a "S4 Package step by step for newbies" :-)

Regards,
Jean-Christophe Bouëtté.


> in the R code in your package, hence the class "dog" is undefined.
>
>
> > Here's the NAMESPACE
> > importFrom(graphics,plot)
> > exportClasses("dog")
> > exportMethods("plot","show")
>
>
> You don't export any other functions?
>
>
> Uwe Ligges
>
>
>
>
> >
> > thanks yet again,
> > Sincerely,
> > Erin
> > mailto: [hidden email]
> >
> > ______________________________________________
> > [hidden email] mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
>
>
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Reply | Threaded
Open this post in threaded view
|

Re: exporting methods/classes

Uwe Ligges
Jean-Christophe BOUETTE wrote:

>>---------- Message transféré ----------
>>From: Uwe Ligges <[hidden email]>
>>To: Erin Hodgess <[hidden email]>
>>Date: Sun, 08 Jan 2006 15:09:06 +0100
>>Subject: Re: [R] exporting methods/classes
>>Erin Hodgess wrote:
>>
>>
>>>Dear R People:
>>>
>>>I'm still struggling with sending methods and classes as part of
>>>creating a new package.
>>>
>>>Where does the .onLoad function go?  Within R itself or in a file
>>>in one of the new package directories?
>>
>>Simply save the .onLoad function in some .R file (e.g. zzz.R) in the
>>package's ./R directory.
>>
>>
>>
>>
>>>Here are my latest efforts:
>>>
>>>
>>>Here's the last part of the woof1-Ex.Rout
>>>
>>>
>>>
>>>>library('woof1')
>>>
>>>Error in loadNamespace(package, c(which.lib.loc, lib.loc),
>>>keep.source = keep.source) :
>>>      in 'woof1' classes for export not defined: dog
>>>Error: package/namespace load failed for 'woof1'
>>>Execution halted
>>
>>So this looks like you have defined S4 classes for export in your
>>Namespace but you have no call that starts with
>>
>>setClass("dog", ......
>>
>
> Well, it's not that easy for a newbie (like me) to track that problem.
> Using package.skeleton() (on my old R 2.1.1) puts all the function
> definitions in the ./R subdirectory, but not the call to setClass (or
> did I make something wrong?). Maybe it's one of the things that should
> be documented to make package creation easier. Of course, I know
> somebody will point me to some doc where it is stated but the fact is
> that it was not obvious.

Well, according to the documentation, package.skeleton "saves functions
and data to appropriate places" (but not calls like setClass() and friends).

Please consider package.skeleton() only as a function that helps to set
up the basic directory structure and required files. You have to edit
the files afterwards, and add stuff like the mentioned calls to all
those S4 generators.


> By the way, I'd like to thank Uwe Ligges and Duncan Murdoch for the
> helpful article in R-Help 5/2, it was really useful to me. If I manage

Nice to hear (you mean R News, though), thank you.
Although I still do not understand why it helps so much more to have
those examples (compared to the information given in the manual).

Uwe Ligges



> to understand all the steps necessary to make an S4 namespace package
> I promise to write a "S4 Package step by step for newbies" :-)
>
> Regards,
> Jean-Christophe Bouëtté.
>
>
>
>>in the R code in your package, hence the class "dog" is undefined.
>>
>>
>>
>>>Here's the NAMESPACE
>>>importFrom(graphics,plot)
>>>exportClasses("dog")
>>>exportMethods("plot","show")
>>
>>
>>You don't export any other functions?
>>
>>
>>Uwe Ligges
>>
>>
>>
>>
>>
>>>thanks yet again,
>>>Sincerely,
>>>Erin
>>>mailto: [hidden email]
>>>
>>>______________________________________________
>>>[hidden email] mailing list
>>>https://stat.ethz.ch/mailman/listinfo/r-help
>>>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>>
>>
>>
>>
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html