我正在尝试创建一个包但是当我运行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撰写的R包书http://r-pkgs.had.co.nz/namespace.html 并被这条线弄糊涂了:
&#34;请注意,您可以选择使用roxygen2生成NAMESPACE,只需生成man / *。Rd或两者。如果您不使用任何与命名空间相关的标记,则roxygen2将不会触及NAMESPACE。如果你不使用任何与文档相关的标签,roxygen2将不会触及man /."
这是我做错了吗?或遗失?
答案 0 :(得分:17)
devtools::document()
,以便roxygen2将在包源目录中生成新的NAMESPACE文件 ***确保您在R源文件的roxygen2 doc部分中有@export
标记。
答案 1 :(得分:12)
我认为devtools
试图避免覆盖它本身没有生成的DESCRIPTION和NAMESPACE文件(如果你自己仔细地输入它们,而不是在你的r代码中使用嵌入式roxygen注释,就要避免焦虑) 。它并不总是可行,但它会尝试。
据我所知,主要机制是在生成文件时在文件顶部发布注释,然后再查找该注释(边缘有棘手的位,例如,你使用@include
来创建描述文件中的整理顺序,但我不认为这是你的问题。)
此类评论的一个例子是
# Generated by roxygen2 (4.1.0.9001): do not edit by hand
not generated by ...
消息提醒您,并告知您devtools
不会使用roxygen2
为您制作NAMESPACE文件。您可能有一个没有评论的提及,因为您使用RStudio来启动您的包,而不是devtools::create()
?
如果您只删除NAMESPACE文件,我认为devtools::document()
将适合您。
BTW您在上面的示例代码中有拼写错误(您有#' @import ggplo2
而不是#' @import ggplot2
)
答案 2 :(得分:1)
也可以简单地删除NAMESPACE中的所有内容并添加一行:exportPattern("^[[:alpha:]]+")
如果手动更改了文件NAMESPACE,devtools::document()
将无法覆盖此文件,这就是它之前离开的原因。当您从NAMESPACE文件中删除文本并插入此行时,devtools::document()
认为该文件是新文件并覆盖它。
答案 3 :(得分:0)
前面的例子都不适合我。如果我删除了NAMESPACE
文件,则roxygen
抱怨没有NAMESPACE
。如果我删除并重新创建了一个NAMESPACE
文件(带有触摸,例如RStudio: Building package with roxygen2. Not producing NAMESPACE file),那么roxygen抱怨该文件不是用roxygen创建的。
解决方案是从另一个使用roxygen创建 的项目中复制NAMESPACE
个文件。