hi1*_*i15 17 namespaces packages r devtools ggplot2
我正在尝试制作一个包,但是当我运行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
Run Code Online (Sandbox Code Playgroud)
我想知道是什么原因造成了这个错误,Namespace除了我之外什么也没有exportPattern("^[^\\.]")
另外,我正在浏览Hadley的r包书http://r-pkgs.had.co.nz/namespace.html 并且对此行感到困惑:
"请注意,您可以选择使用roxygen2生成NAMESPACE,只需生成man/*.Rd或两者.如果您不使用任何与命名空间相关的标签,roxygen2将不会触及NAMESPACE.如果您不使用任何文档相关标签,roxygen2不会触及man /."
这是我做错了吗?还是缺了?
Sat*_*ish 20
devtools::document(),以便roxygen2将在包源目录中生成新的NAMESPACE文件***确保您@export在R源文件的roxygen2 doc部分中有标记.
Geo*_*off 13
我认为这样devtools可以避免覆盖它本身没有生成的DESCRIPTION和NAMESPACE文件(如果你自己仔细地输入它们,而不是在你的r代码中使用嵌入式roxygen注释,那就要避免焦虑).它并不总是可行,但它会尝试.
据我所知,主要机制是在生成文件时在文件顶部发布注释,然后再查找该注释(边缘有棘手的位,例如,如果你使用@includes在DESCRIPTION文件中创建Collate订单,但我不认为这是你的问题.)
这种评论的一个例子是
# Generated by roxygen2 (4.1.0.9001): do not edit by hand
Run Code Online (Sandbox Code Playgroud)
该not generated by ...消息提醒您,并且让您知道devtools不会roxygen2用于为您创建NAMESPACE文件.你可能有没有评论的那个,因为你使用RStudio来启动你的包,而不是devtools::create()?
如果您只是删除NAMESPACE文件,我认为devtools::document()这将适合您.
顺便说一句你在上面的示例代码中有一个拼写错误(你有#' @import ggplo2而不是#' @import ggplot2)
感谢@jsta的解决方案,我# Generated by roxygen2: do not edit by hand在文件顶部复制了以下行NAMESPACE,然后复制了一个空行。
然后我devtools::document()在控制台中运行,它会自动替换现有NAMESPACE文件。
我认为顶行正是 roxygen 将查找的内容,以查看该文件是否由 roxygen 生成。