构建自己的包但加载后命名空间为空
Building own package but namespace is empty after loading
我正在使用 RStudio 创建自己的包,到目前为止效果很好。当我现在通过 RStudio 的 'Build Source Package' 构建一个包时(将包从我的 Windows 机器移动到 Linux 机器)一切似乎都很好。我在Linux机器上安装包,用require(或library)加载,但是找不到函数!错误是 object 'somefunction' not found
和 myPackage::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
有效。
我正在使用 RStudio 创建自己的包,到目前为止效果很好。当我现在通过 RStudio 的 'Build Source Package' 构建一个包时(将包从我的 Windows 机器移动到 Linux 机器)一切似乎都很好。我在Linux机器上安装包,用require(或library)加载,但是找不到函数!错误是 object 'somefunction' not found
和 myPackage::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 tellsRoxygen2
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
有效。