构建自己的包但加载后命名空间为空

Building own package but namespace is empty after loading

我正在使用 RStudio 创建自己的包,到目前为止效果很好。当我现在通过 RStudio 的 'Build Source Package' 构建一个包时(将包从我的 Windows 机器移动到 Linux 机器)一切似乎都很好。我在Linux机器上安装包,用require(或library)加载,但是找不到函数!错误是 object 'somefunction' not foundmyPackage::somefunction 表示没有导出此类对象。事实上,如果我在 RStudio 中查看 myPackage 的环境,它会显示它是空的。

RStudio 按创作说:

==> 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

我发现我项目的文件 NAMESPACE 只包含行 # Generated by roxygen2: do not edit by hand。在我的其他包中(较早构建,暂时不重建)NAMESPACE 包含 exportPattern("^[[:alpha:]]+").

尝试修复此问题(并手动编辑文件)我将此行复制到 'myPackage' 的 NAMESPACE。如果我现在在 RStudio 中执行 'Build & Reload',它会在本地安装包并根据需要找到所有功能。

==> 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)

但是当我现在在 RStudio 中执行 'Build Source Package' 时,NAMESPACE 再次被修改为评论并且再次出现同样的问题。 所以我不知道如何将包创建为源包。

版本:R 版本 3.2.4 已修订(所有包都是最新的意思 roxygen2_5.0.1),RStudio 0.99.896

我在尝试创建包时遇到了同样的问题。我通过在每个函数之前添加 #' @export 来实现它,如 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.

也许完全不相关,但我遇到了完全相同的问题,而且我的 .Rbuildignore 文件中的内容似乎不正确。其实是因为我里面有空行。

- frbl

我遇到了同样的问题。我在某处复制了一个示例 #' @export 但它没有用。

后来我尝试了其他的“'”,最后我发现:#' @export有效。