Search code examples
rrstudiopackageroxygen2

Building own package but namespace is empty after loading


I'm using RStudio to create own packages, which has worked well so far. When I build a package now by 'Build Source Package' of RStudio (to move the package from my Windows machine to a Linux machine) everything seems fine. I install the package on the Linux machine, load it with require (or library), but no function can be found! The error is object 'somefunction' not found and myPackage::somefunction says that no such object is exported. Indeed if I have a look at the environment of myPackage in RStudio it shows that it is empty.

RStudio says by creation:

==> roxygen2::roxygenize('.', roclets=c('rd', 'collate', 'namespace', 'vignette'))

First time using roxygen2. Upgrading automatically...
Writing NAMESPACE
Warnmeldung:
Paket 'nlme' wurde unter R Version 3.2.5 erstellt 
Documentation completed

==> Rcmd.exe build myPackage

* checking for file 'myPackage/DESCRIPTION' ... OK
* preparing 'myPackage':
* checking DESCRIPTION meta-information ... OK
* cleaning src
* checking for LF line-endings in source and make files
* checking for empty or unneeded directories
Removed empty directory 'myPackage/data'
* building 'myPackage_2.0.0.tar.gz'

Source package written to D:/Code

I found out the the file NAMESPACE of my project just contains the line # Generated by roxygen2: do not edit by hand. In my other packages (build earlier and not rebuild for the moment) NAMESPACE contains exportPattern("^[[:alpha:]]+").

Trying to repair this (and editing the file by hand) I copy this line to NAMESPACE of 'myPackage'. If I now do 'Build & Reload' in RStudio it installs the package locally and finds all functions as desired.

==> Rcmd.exe INSTALL --no-multiarch --with-keep.source myPackage

* installing to library 'C:/Users/user/Documents/R/win-library/3.2'
* installing *source* package 'myPackage' ...
** libs
make: Nothing to be done for `all'.
installing to C:/Users/user/Documents/R/win-library/3.2/myPackage/libs/x64
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (myPackage)

BUT when I now do 'Build Source Package' in RStudio, NAMESPACE is again modified just to the comment and the same problem occurs again. So I don't know how to create the package as source package.

Versions: R version 3.2.4 Revised (all packages up-to-date meaning roxygen2_5.0.1), RStudio 0.99.896


Solution

  • I had the same problem trying to create a package. I got it to work by adding #' @export before each function, as explained on here.

    The @export line is critical. This tells Roxygen2 to add this function to the NAMESPACE file, so that it will be accessible to users. For your first R package, you’ll probably want to include @export for each of your functions.