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

Ric*_*ton 21 r exception roxygen2

在构建包时,我收到了错误

Error in namespaceExport(ns, exports) : 
  undefined exports: FooBarBaz
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*ton 10

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

export(FooBarBaz)
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

此代码块中的错误是@exportWidgetUtilsroxygen块中包含标记.这告诉roxygen在NAMESPACE文件中生成导出行,但是它的值是NULL,所以没有什么可以导出.通过删除该@export行,代码将正常工作.

  • @MarcinKosiński如果这个答案不符合您的需求,那么1)找出您的案例中出现问题并更新答案(这是社区维基,所以随时编辑),或者2)提出一个新的问题描述你的问题,包括一个可重复性最小的例子.否则你只是在拖钓. (5认同)

Pet*_*ont 7

小心不要有任何以撇号开头的注释行!

不幸的是,在我的函数中,我注释掉了一行以撇号开头的行(在我的假示例中的“太空堡垒卡拉狄加”前面),所以它看起来像这样:

#' @export
getMyFavoriteSciFiShows <- function() {
  myFavoriteSciFiShows <-
    c('Star Trek Next Generation',
      #'Battlestar Galactica',
      'Babylon 5')
  return(myFavoriteSciFiShows)
}
Run Code Online (Sandbox Code Playgroud)

这确实搞砸了 roxygen2 v 6.0.1,因为它没有发出任何错误信号,这就是它放入我的 NAMSEPACE 文件中的内容:

export("Galactica',")
export(Battlestar)
Run Code Online (Sandbox Code Playgroud)

不仅缺少我想要的导出 myFavoriteSciFiShows,而且还添加了两个错误的导出。这些错误可能会导致未定义的导出。