什么可以导致devtools :: document()和devtools :: lint()停止识别导入?

时间:2018-01-25 21:37:42

标签: r devtools

我正在修改我的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)
          ^~~~~~~~~~

1 个答案:

答案 0 :(得分:0)

调用roxygen2::roxygenize()成功创建了一个新的NAMESPACE文件。通常devtools::document()通常可以这样做,但显然不是我的情况。但是,document()之后会按预期工作。