[R] Help with namespace

Duncan Murdoch murdoch at stats.uwo.ca
Mon Oct 26 19:29:09 CET 2009

On 10/26/2009 1:43 PM, Doran, Harold wrote:
> I'm having a little trouble building a package with a namespace. Suppose I have two functions: g and f and I want to build the package foo. Suppose f is a function that has an internal purpose and should not be visible to the user. Additionally, I do not want to write a help (Rd) file for f. The only function that should be visible to the user and have an associated help function is g.
> First off, if I follow the normal (windows-based) procedures for building this package without the namespace I have no problems. I do build, check, and install all without fail and can use these functions in an R session. 
> Now, I add in a namespace file in the top level directory and, following the namespace example found at the link below, I construct a namespace that has the following in it:
> ### begin namespace file
> useDynLib(foo)

Two questions:

Do you really have C or Fortran or other external source code in your 
src directory?  That should be compiled into foo.dll, and useDynLib is 
looking for it.  But the error below indicates that didn't happen.

If you don't have any external code, you don't want the useDynLib line.

And did you really call it "namespace"?  It should be called 
"NAMESPACE".  On Windows either will work because it isn't case 
sensitive, but when you distribute to others, you may end up on a case 
sensitive file system, and you'd better get it right.

> export(g)
> ### end namespace file
> http://cran.r-project.org/doc/manuals/R-exts.html#An-example
> Because I don't want there to be an .Rd file for the function f I remove it from the "man" directory. I say remove because I use package.skeleton() and it automatically creates an empty .Rd file for the function f. This leaves only g.Rd and foo-package.Rd in the man directory.
> After running Rcmd check foo, I get the following:
> C:\Program Files\R\R-2.9.2\bin>Rcmd check g:\foo
> * checking for working pdflatex ...pdflatex: not found
>  NO
> * checking for working latex ...latex: not found
>  NO
> * using log directory 'C:/Program Files/R/R-2.9.2/bin/foo.Rcheck'
> * using R version 2.9.2 (2009-08-24)
> * using session charset: ISO8859-1
> * checking for file 'foo/DESCRIPTION' ... OK
> * checking extension type ... Package
> * this is package 'foo' version '1.0'
> * checking package name space information ... OK
> * checking package dependencies ... OK
> * checking if this is a source package ... OK
> * checking for .dll and .exe files ... OK
> * checking whether package 'foo' can be installed ... OK
> * checking package directory ... OK
> * checking for portable file names ... OK
> * checking DESCRIPTION meta-information ... OK
> * checking top-level files ... OK
> * checking index information ... OK
> * checking package subdirectories ... OK
> * checking R files for non-ASCII characters ... OK
> * checking R files for syntax errors ... OK
> * checking whether the package can be loaded ... ERROR
> Error in library.dynam(lib, package, package.lib) :
>   shared library 'foo' not found
> Error: package/namespace load failed for 'foo'
> Execution halted
> It looks like this package has a loading problem: see the messages for
> details.
> The fact that latex is not found baffles me, but that's another issue which is ancillary to my problem. But, just for completeness, it is installed, it is in the path as directed by Duncan Murdoch's website for building R packages indicates. I've built packages many times before even though this error exists.

Does "pdflatex --version" work at the command line?  What does it tell you?

Duncan Murdoch

> I think I am missing some understanding of how the namespace should be properly developed and used in the construction of the package. Any insight into my errors is appreciated.
> Harold
>> sessionInfo()
> R version 2.9.2 (2009-08-24) 
> i386-pc-mingw32 
> locale:
> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base    
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list