Thanks Dirk. Sorry...It's my misunderstanding about "export" in the
NAMESPACE then. Essentially, as I understand it now, I should export all
functions that are used in the package? Why would I not export a certain
function?

In the example above, say I wanted to avoid documenting the function
"timestwo" in the foo package. Is there a way to do that? Otherwise in R
CMD check foo, I get this "Undocumented code objects: ‘timestwo’".

Thanks again for all your help!
Axel.


On Sat, Jan 25, 2014 at 8:32 PM, Dirk Eddelbuettel <e...@debian.org> wrote:

>
> On 25 January 2014 at 20:26, Axel Urbiz wrote:
> | Dirk and Uwe, many thanks both for your responses. I'm still having the
> same
> | issue. Here's in more detail:
> |
> | As Dirk suggested, I've done the following:
> |
> | * I've created a package named {foo}.
> |
> | * {foo} only has one file named test.R which includes exactly the
> following
> | code:
> |
> |
> | multiply <- function(x,y) x * y
> |
> | timestwo <- function(x) multiply(x, 2)
> |
> | * I've modified the NAMESPACE to include ONLY the following line:
> |
> | export(multiply)
> |
> | * I've successfully built and installed the foo package
> |
> | * Then in R I got this:
> |
> | > library(foo)
> |
> | > multiply(2,3)
> |
> | [1] 6
> |
> | > timestwo(2)
> |
> | Error: could not find function "timestwo"
> |
> | >
> |
> | * However, if in the NAMESPACE I write instead export(multiply,
> timestwo), then
> | I don't get the error above.
>
> That. Works. As. Designed. And. Documented.
>
>   Case 1)  You _export only multiply_. Hence timestwo is not found. Hint:
>   learn about the difference between '::' and ':::' as well.
>
>   Case 2)  You _export both_. Both are found.
>
> No mystery.  What other effect do you expect export() to have?
>
> Dirk
>
> |
> | * btw, here's my session info
> |
> | > sessionInfo()
> |
> | R Under development (unstable) (2014-01-17 r64821)
> |
> | Platform: x86_64-apple-darwin10.8.0 (64-bit)
> |
> | locale:
> |
> | [1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8
> |
> | attached base packages:
> |
> | [1] stats     graphics  grDevices utils     datasets  methods   base
> |
> |
> | other attached packages:
> |
> | [1] foo_1.0
> |
> |
> | Thanks,
> |
> | Axel.
> |
> |
> |
> |
> |
> |
> |
> |
> | On Sat, Jan 25, 2014 at 4:32 PM, Uwe Ligges <
> lig...@statistik.tu-dortmund.de>
> | wrote:
> |
> |
> |
> |     On 25.01.2014 14:53, Dirk Eddelbuettel wrote:
> |
> |
> |         On 25 January 2014 at 14:38, Axel Urbiz wrote:
> |         | Hello,
> |         |
> |         | I'm building a package. My code is stored in foo.R. This code
> has two
> |         | functions FUN1 and FUN2. FUN1 calls FUN2. FUN1 is listed in
> export()
> |         under
> |         | the package NAMESPACE but NOT FUN2. After building the package
> when I
> |         call
> |         | FUN1 is giving me an error that cannot find FUN2.
> |
> |         Then you are doing something wrong in building, or possibly
> testing,
> |         the package.
> |
> |
> |
> |     I guess you have FUN1 in your Workspace and using that rather than
> the one
> |     in your package.
> |
> |     Uwe Ligges
> |
> |
> |
> |
> |         "Everything within" can see everything else.
> |
> |         | I solved this by adding FUN2 in the export() NAMESPACE.
> However, what
> |         is
> |         | puzzling me is that I have other examples similar to the above
> (i.e.,
> |         one
> |         | function calling another but only one exported) in the same
> package
> |         where I
> |         | don't get the error message.
> |         |
> |         | Any idea of why that might be the case? My understanding is
> that
> |         export
> |
> |         We cannot tell without seeing the code.
> |
> |         I suggest you spend two minutes with package.skeleton(), create
> an
> |         empty
> |         package, put something like these two functions in
> |
> |                   multiply <- function(x, k) x * k
> |
> |                   timestwo <- function(x) multiply(x, 2)
> |
> |         to convince yourself that timestwo() can in fact use multiply().
> |
> |         | only controls what is visible to the end user but functions not
> |         listed in
> |         | export() are still "usable" within the package.
> |         |
> |         | In this case, the reason I'd like to avoid to export FUN2 is
> so I
> |         don't
> |         | have to add it in the package documentation.
> |         |
> |         |
> |         | Any guidance is much appreciated.
> |         |
> |         | Regards,
> |         | Axel.
> |         |
> |         |       [[alternative HTML version deleted]]
> |         |
> |         | ______________________________________________
> |         | R-devel@r-project.org mailing list
> |         | https://stat.ethz.ch/mailman/listinfo/r-devel
> |
> |
> |
>
> --
> Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com
>

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to