名称空间不是由 roxygen2 生成的。跳过。 - 与哈德利书混淆
NAMESPACE not generated by roxygen2. Skipped. - Confusion with Hadley book
我正在尝试制作一个包,但是当我 运行 document()
它打印 NAMESPACE not generated by roxygen2. Skipped.
我正在尝试在我的函数中使用 ggplot2,XML, R6
包。我通过以下方式导入它们:
#' @rdname visualization
#' @param hist_data A table of weather variables with PWS created by hist_data function
#' @param variable A character string of variable name
#' @examples
#' table <- getWeather(city = "San Francisco", state="CA")
#' please <- getConditionsTable(table, "2015-03-09")
#' tab <- hist_data(table, please)
#' head(tab)
#' plot_variable_across_all_pws(hist_data=tab, variable="tempi")
#' @import ggplot2
#' @import XML
#' @import R6
我想知道是什么导致了这个错误,我的 Namespace
除了 exportPattern("^[^\.]")
之外什么都没有
此外,我正在阅读 Hadley http://r-pkgs.had.co.nz/namespace.html 的 R 包书
并被这条线弄糊涂了:
"Note that you can choose to use roxygen2 to generate just NAMESPACE, just man/*.Rd, or both. If you don’t use any namespace related tags, roxygen2 won’t touch NAMESPACE. If you don’t use any documentation related tags, roxygen2 won’t touch man/."
这是我做错了吗?还是失踪了?
我认为 devtools
试图避免覆盖它自己没有生成的 DESCRIPTION 和 NAMESPACE 文件(以避免焦虑,如果你自己仔细输入它们,而不是在你的 r 中使用嵌入式 roxygen 注释代码)。这并不总是可能的,但它会尝试。
据我了解,主要机制是在生成文件时在文件顶部post注释,然后在稍后查找该注释(周围有棘手的位边缘,例如,如果您使用 @include
s 在 DESCRIPTION 文件中创建整理顺序,但我认为这不是您的问题。)
此类评论的一个例子是
# Generated by roxygen2 (4.1.0.9001): do not edit by hand
not generated by ...
消息提醒您注意这一点,让您知道 devtools
不会使用 roxygen2
为您创建 NAMESPACE 文件。你可能有你提到的没有评论的那个,因为你使用 RStudio 启动你的包,而不是 devtools::create()
?
如果您只是删除 NAMESPACE 文件,我认为 devtools::document()
对您有用。
顺便说一句,您在上面的示例代码中有错字(您使用的是 #' @import ggplo2
而不是 #' @import ggplot2
)
也可以简单地从 NAMESPACE 中删除所有内容并添加留下一行:exportPattern("^[[:alpha:]]+")
如果手动更改文件 NAMESPACE,devtools::document()
无法覆盖此文件,这就是它像以前一样离开的原因。当您从 NAMESPACE 文件中删除文本并插入此行时,devtools::document()
认为该文件是新文件并覆盖它。
- 备份 NAMESPACE 文件,以备将来使用
- 删除命名空间文件
- 运行
devtools::document()
,这样roxygen2会在包源目录下生成新的NAMESPACE文件
*** 确保在 R 源文件的 roxygen2 文档部分中有 @export
标记。
前面的示例中的 None 对我有用。如果我删除了 NAMESPACE
文件,那么 roxygen
会抱怨没有 NAMESPACE
。如果我删除并重新创建了一个 NAMESPACE
文件(使用 `touch,例如 RStudio: Building package with roxygen2. Not producing NAMESPACE file)然后 roxygen 抱怨该文件不是用 roxygen 创建的。
解决方案是从 使用 roxygen 创建的另一个项目复制 NAMESPACE
文件。
感谢@jsta 的解决方案,我在 NAMESPACE
文件的顶部复制了以下行 # Generated by roxygen2: do not edit by hand
,然后复制了一个空行。
然后我在控制台中 运行 devtools::document()
它自动替换了现有的 NAMESPACE
文件。
我认为顶行正是 roxygen 将要查找的内容,以查看该文件是否由 roxygen 生成。
我正在尝试制作一个包,但是当我 运行 document()
它打印 NAMESPACE not generated by roxygen2. Skipped.
我正在尝试在我的函数中使用 ggplot2,XML, R6
包。我通过以下方式导入它们:
#' @rdname visualization
#' @param hist_data A table of weather variables with PWS created by hist_data function
#' @param variable A character string of variable name
#' @examples
#' table <- getWeather(city = "San Francisco", state="CA")
#' please <- getConditionsTable(table, "2015-03-09")
#' tab <- hist_data(table, please)
#' head(tab)
#' plot_variable_across_all_pws(hist_data=tab, variable="tempi")
#' @import ggplot2
#' @import XML
#' @import R6
我想知道是什么导致了这个错误,我的 Namespace
除了 exportPattern("^[^\.]")
此外,我正在阅读 Hadley http://r-pkgs.had.co.nz/namespace.html 的 R 包书 并被这条线弄糊涂了:
"Note that you can choose to use roxygen2 to generate just NAMESPACE, just man/*.Rd, or both. If you don’t use any namespace related tags, roxygen2 won’t touch NAMESPACE. If you don’t use any documentation related tags, roxygen2 won’t touch man/."
这是我做错了吗?还是失踪了?
我认为 devtools
试图避免覆盖它自己没有生成的 DESCRIPTION 和 NAMESPACE 文件(以避免焦虑,如果你自己仔细输入它们,而不是在你的 r 中使用嵌入式 roxygen 注释代码)。这并不总是可能的,但它会尝试。
据我了解,主要机制是在生成文件时在文件顶部post注释,然后在稍后查找该注释(周围有棘手的位边缘,例如,如果您使用 @include
s 在 DESCRIPTION 文件中创建整理顺序,但我认为这不是您的问题。)
此类评论的一个例子是
# Generated by roxygen2 (4.1.0.9001): do not edit by hand
not generated by ...
消息提醒您注意这一点,让您知道 devtools
不会使用 roxygen2
为您创建 NAMESPACE 文件。你可能有你提到的没有评论的那个,因为你使用 RStudio 启动你的包,而不是 devtools::create()
?
如果您只是删除 NAMESPACE 文件,我认为 devtools::document()
对您有用。
顺便说一句,您在上面的示例代码中有错字(您使用的是 #' @import ggplo2
而不是 #' @import ggplot2
)
也可以简单地从 NAMESPACE 中删除所有内容并添加留下一行:exportPattern("^[[:alpha:]]+")
如果手动更改文件 NAMESPACE,devtools::document()
无法覆盖此文件,这就是它像以前一样离开的原因。当您从 NAMESPACE 文件中删除文本并插入此行时,devtools::document()
认为该文件是新文件并覆盖它。
- 备份 NAMESPACE 文件,以备将来使用
- 删除命名空间文件
- 运行
devtools::document()
,这样roxygen2会在包源目录下生成新的NAMESPACE文件
*** 确保在 R 源文件的 roxygen2 文档部分中有 @export
标记。
None 对我有用。如果我删除了 NAMESPACE
文件,那么 roxygen
会抱怨没有 NAMESPACE
。如果我删除并重新创建了一个 NAMESPACE
文件(使用 `touch,例如 RStudio: Building package with roxygen2. Not producing NAMESPACE file)然后 roxygen 抱怨该文件不是用 roxygen 创建的。
解决方案是从 使用 roxygen 创建的另一个项目复制 NAMESPACE
文件。
感谢@jsta 的解决方案,我在 NAMESPACE
文件的顶部复制了以下行 # Generated by roxygen2: do not edit by hand
,然后复制了一个空行。
然后我在控制台中 运行 devtools::document()
它自动替换了现有的 NAMESPACE
文件。
我认为顶行正是 roxygen 将要查找的内容,以查看该文件是否由 roxygen 生成。