2015-03-19 56 views
9

我想做一个包,但是当我运行document()它打印NAMESPACE not generated by roxygen2. Skipped.我想在我的函数中使用ggplot2,XML, R6包。我导入它们以下列方式:NAMESPACE不是由roxygen2生成的。跳过。 - 与哈德利书混淆

#' @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 ggplo2 
#' @import XML 
#' @import R6 

我想知道什么可能导致这个错误并没有什么,我Namespace除了

而且,我被哈德利去在R封装书http://r-pkgs.had.co.nz/namespace.html ,并在行困惑:

“请注意,您可以选择使用roxygen2产生刚刚命名空间中,只是男/ *路,或两者如果你不使用任何命名空间相关的标记,roxygen2赢得了”。 t touch NAMESPACE。如果你不使用任何文档rel ated tags,roxygen2不会碰男人。“

这是我做错了什么?或失踪?

+0

你有没有尝试把描述文件中的进口? roxygen2永远不会触及该文件 – 2015-03-19 02:47:30

回答

6
  1. 备份空间文件,如果你需要它以备将来使用
  2. 删除空间文件
  3. 运行devtools::document(),使roxygen2将在包源目录下生成新的命名空间的文件

* **确保您在R源文件的roxygen2文档部分有@export标签。

10

我认为devtools试图避免覆盖它自己没有生成的DESCRIPTION和NAMESPACE文件(为了避免焦虑,如果你自己仔细输入它们,而不是在你的r代码中使用嵌入的roxygen注释)。这并不总是可能的,但它会尝试。

据我所知,主要机制是在生成文件时在文件顶部发表评论,然后再查找该评论(例如,边缘有棘手的位,例如如果你使用@include s到创建描述文件的整理顺序,但我不认为那是你的问题就在这里。)

这么评论的一个例子是

# 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 ggplot2#' @import ggplo2代替)

1

也可以简单地从NAMESPACE删除一切并添加空一行:exportPattern("^[[:alpha:]]+")

如果文件名称空间手动更改,devtools::document()无法覆盖此文件,这就是为什么它像以前一样离开。当您从NAMESPACE文件中删除文本并插入此行时,devtools::document()认为该文件是新文件并将其覆盖。

+0

请您详细说明您的答案,并添加关于您提供的解决方案的更多描述。 – abarisone 2015-09-22 14:27:48

+0

如果手动更改文件NAMESPACE,则devtools :: document()无法覆盖此文件,这就是它像以前一样离开的原因。当您从NAMESPACE文件中删除文本并插入此行时,devtools :: document()认为该文件是新的并覆盖它。 – irudnyts 2015-09-22 14:32:50

0

上述例子都不适合我。如果我删除NAMESPACE文件,则roxygen抱怨没有NAMESPACE。如果我删除并重新创建了一个NAMESPACE文件(使用`touch,例如RStudio: Building package with roxygen2. Not producing NAMESPACE file),则roxygen会抱怨文件不是使用roxygen创建的。

解决的办法是从另一个项目中复制NAMESPACE文件,其中,并由roxygen创建。