我使用RStudio创建自己的软件包,到目前为止一直运行良好。当我现在通过“构建源包”来构建包时。 RStudio(将包从我的Windows机器移动到Linux机器)一切似乎都很好。我在Linux机器上安装软件包,用require(或库)加载它,但是找不到任何功能!错误为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
。如果我现在做' Build&刷新'在RStudio中,它在本地安装软件包并根据需要查找所有函数。
==> 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)
但我现在做的是“构建源包”#39;在RStudio中,NAMESPACE
再次被修改为注释,并再次出现相同的问题。
所以我不知道如何创建包作为源包。
版本:R版本3.2.4修订版(所有软件包最新含义roxygen2_5.0.1),RStudio 0.99.896
答案 0 :(得分:9)
我在尝试创建包时遇到了同样的问题。我按照here上的解释,在每个函数之前添加#' @export
使其工作。
@export
行至关重要。 这告诉Roxygen2
将此函数添加到NAMESPACE文件中,以便用户可以访问它。对于您的第一个R套餐,您可能希望为每个功能添加@export
。
答案 1 :(得分:0)
也许完全未发布,但我遇到了完全相同的问题,似乎我的.Rbuildignore
文件中存在不正确的内容。实际上,那是因为我在那里有空白。
- frbl
答案 2 :(得分:0)
我遇到了同样的问题。我在某个地方复制了一个例子#' @export
但它没有用。
后来我尝试了其他的" ' "最后我发现:#' @export
有效。