“namespaceExport中的错误(ns,exports):undefined exports”是什么意思?

时间:2014-11-02 09:09:01

标签: r exception roxygen2

构建包时,我收到了错误

Error in namespaceExport(ns, exports) : 
  undefined exports: FooBarBaz

这是什么意思,我该如何解决?

4 个答案:

答案 0 :(得分:10)

当您尝试导出不存在的对象时,会发生此错误。也就是说,包NAMESPACE文件包含行

export(FooBarBaz)

但是FooBarBaz并不存在于包中。


发生此错误的一种情况是,当您尝试使用roxygen2为多个功能创建公共帮助页面时。在下面的示例中,fg是要在WidgetUtils页面中记录的相关功能。

#' Widget-related functions
#' 
#' Utility functions to assist working with widgets.
#' @param x An input.
#' @return A value.
#' @name WidgetUtils
#' @export
NULL

#' @rdname WidgetUtils
#' @export
f <- function(x)
{
  x + 1
}

#' @rdname WidgetUtils
#' @export
g <- function(x)
{
  x - 1
}

此代码块中的错误是在@export roxygen块中包含WidgetUtils标记。这告诉roxygen在NAMESPACE文件中生成导出行,但其值为NULL,因此无需导出。删除@export行后,代码就能正常运行。

答案 1 :(得分:2)

我有一个非常愚蠢的错字:在roxygen2骨架中,我复制了进入#' @return字段的内容,@export

应该是:

#' @return new data frame
#' @export

相反,我有:

#' @return
#' @export new data frame

答案 2 :(得分:0)

我删除了一个函数,而roxygen2似乎没有从NAMESPACE文件中删除它。进入那里,手动删除该行,它将纠正错误

答案 3 :(得分:0)

有替代方法,从GitHub repo下载包,然后Install & Restart