NAMESPACE不是由roxygen2生成的。跳过。 - 与哈德利书混淆

时间:2015-03-19 01:55:33

标签: r ggplot2 namespaces packages devtools

我正在尝试创建一个包但是当我运行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

我想知道可能导致此错误的原因是NamespaceexportPattern("^[^\\.]")

外没有任何内容

另外,我正在查看Hadley撰写的R包书http://r-pkgs.had.co.nz/namespace.html 并被这条线弄糊涂了:

&#34;请注意,您可以选择使用roxygen2生成NAMESPACE,只需生成man / *。Rd或两者。如果您不使用任何与命名空间相关的标记,则roxygen2将不会触及NAMESPACE。如果你不使用任何与文档相关的标签,roxygen2将不会触及man /."

这是我做错了吗?或遗失?

4 个答案:

答案 0 :(得分:17)

  1. 备份NAMESPACE文件,如果您将来需要它
  2. 删除NAMESPACE文件
  3. 运行devtools::document(),以便roxygen2将在包源目录中生成新的NAMESPACE文件
  4. ***确保您在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个文件。