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
.在下面的例子中,f
和g
相关的被记录功能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)
此代码块中的错误是@export
在WidgetUtils
roxygen块中包含标记.这告诉roxygen在NAMESPACE
文件中生成导出行,但是它的值是NULL
,所以没有什么可以导出.通过删除该@export
行,代码将正常工作.
小心不要有任何以撇号开头的注释行!
不幸的是,在我的函数中,我注释掉了一行以撇号开头的行(在我的假示例中的“太空堡垒卡拉狄加”前面),所以它看起来像这样:
#' @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,而且还添加了两个错误的导出。这些错误可能会导致未定义的导出。
归档时间: |
|
查看次数: |
5362 次 |
最近记录: |