我正在构建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中看到一些新命名的函数名称不存在,并且一些旧的(自重命名的)函数名称仍然存在。我可以手动改变它,但我知道这很危险,并且想要避免那些糟糕的技术。
如果您有任何想法,请告诉我!谢谢。
答案 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() { ... }