构建R包错误:对象列为导出,但在命名空间中不存在

时间:2014-10-26 16:23:29

标签: r package

我正在构建R包。最近,我删除并重命名了R / allFunctions.R中的几个函数。我以前能够自动更新NAMESPACE,但出于某种原因,我现在无法做到,并且出现如下错误:

library(packageName)
library(roxygen2)
library(devtools)
install()
ERROR: loading failed
* removing ‘/Library/Frameworks/R.framework/Versions/3.1/Resources/library/packageName’
* restoring previous ‘/Library/Frameworks/R.framework/Versions/3.1/Resources/library/packageName’
Error: Command failed (1)
document()
Updating packageName documentation
Loading packageName
Warning message:
In setup_ns_exports(pkg, export_all) :
  Objects listed as exports, but not present in namespace: functionOne, functionTwo

我清楚地看到,我在命名空间中没有一些列为导出的对象。但是,我删除了allFunctions.R文件中的所有@export。我在NAMESPACE中看到一些新命名的函数名称不存在,并且一些旧的(自重命名的)函数名称仍然存在。我可以手动改变它,但我知道这很危险,并且想要避免那些糟糕的技术。

如果您有任何想法,请告诉我!谢谢。

3 个答案:

答案 0 :(得分:3)

我刚刚做了类似的事情:我从R / allFunctions.R删除了3个导出函数并运行了devtools :: document()。这给了我以下错误:

Warning message:
In setup_ns_exports(pkg, export_all) :
  Objects listed as exports, but not present in namespace: getAccounts, getClients, getDeposits

我通过手动删除NAMESPACE文件中的3个export()函数解决了这个问题。

答案 1 :(得分:3)

@ jtr13' s答案也适用于我。只需再次运行devtools::document(),警告就会消失。

> devtools::document()
Updating pavm documentation
Loading pavm
Writing NAMESPACE
Deleting evlCalcTime.Rd
Deleting initTimeStamp.Rd
Warning message:
In setup_ns_exports(pkg, export_all) :
Objects listed as exports, but not present in namespace: evlCalcTime, 
initTimeStamp

> devtools::document()
Updating pavm documentation
Loading pavm

答案 2 :(得分:1)

根据我的经验,这通常是函数定义和roxygen语句之间的拼写错误,特别是涉及camelCase符号时,例如:

#' @export functionOne
functionone <- function() { ... }