我正在修改我的R包,突然document()
停止使用@importFrom
识别我正在使用的功能。我可以使用我的包的唯一方法是为包名称添加前缀(例如stringr::str_detect
)。由于我有很多这些,这需要很长时间。这是在我删除NAMESPACE
文件后开始发生的,因为我不小心留下了@importFrom
空白。 devtools::document()
似乎仍适用于我的其他项目。我注意到lint()
也看到了这些假问题。
我将包文件保留在版本控制中,但是没有看到任何明显的原因它会停止工作。什么样的文本错误可能会导致这种情况?
一些例子:
我有以下代码块在我的包中定义了一个实用程序功能:
#' Check if string ends with y.
#' @param x String.
#' @param y String Scalar.
#' @importFrom stringr str_sub str_length
str_ends_with <- function(x, y) {
stopifnot(length(y) == 1)
leny <- str_length(y)
lenx <- str_length(x)
ifelse(lenx < leny, FALSE,
str_sub(x, start = lenx - leny + 1) == y)
}
然而,lint()
看到了
R/util.R:69:11: warning: no visible global function definition for 'str_length'
leny <- str_length(y)
^~~~~~~~~~
R/util.R:70:11: warning: no visible global function definition for 'str_length'
lenx <- str_length(x)
^~~~~~~~~~
答案 0 :(得分:0)
调用roxygen2::roxygenize()
成功创建了一个新的NAMESPACE
文件。通常devtools::document()
通常可以这样做,但显然不是我的情况。但是,document()
之后会按预期工作。