我正在学习使用roxygen。我看到rd vignette提倡使用“_PACKAGE”表示我正在创建包文档,并说“如果已经有一个名为pkgname()的函数,这也有效。”
我也看到了使用
的R packages book方法NULL
指定了@docType和@name,但是当我尝试使用这两种方法制作玩具示例时,它无法正常工作。
作为一个玩具示例,我想创建一个包含“hello()”函数的“hello”包。
我希望通过
获取有关我的hello 包的文档?hello
或者像
这样的东西package?hello
我期望获得有关包含的功能和
的文档?hello()
我哪里错了? - 使用roxygen实现,我试图查询文档的方式,不正确的期望,还是其他什么?
我已经查看了有关package documentation和function documentation的问题,但我仍不清楚。
以下是我的玩具示例的一些细节:
你好/描述文件:
Package: hello
Type: Package
Title: A mostly empty package
Version: 0.1
Date: 2016-06-21
Authors@R: person("Some", "Person", email = "fake@madeup.org", role = c("aut", "cre"))
Description: More about what it does (maybe more than one line)
License: MIT
LazyData: TRUE
RoxygenNote: 5.0.1.9000
您好/ R / hello.R
#' hello
#'
#' This is a mostly empty package to learn roxygen documentation.
#'
#' Hello allows me to learn how to write documentation in comment blocks
#' co-located with code.
#' @docType package
#' @name hello
"_PACKAGE"
#' hello
#'
#' This function returns "Hello, world!".
#' @export
#' @examples
#' hello()
hello <- function() {
print("Hello, world!")
}
这样,运行document()
后,会生成hello / man / hello.Rd。它包含我为hello包和hello()函数编写的描述的组合。 ?hello
和?hello()
都返回.Rd文件。
以下是.Rd的样子:
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/hello.R
\docType{package}
\name{hello}
\alias{hello}
\alias{hello-package}
\title{hello}
\usage{
hello()
}
\description{
This is a mostly empty package to learn roxygen documentation.
This function returns "Hello, world!".
}
\details{
Hello allows me to learn how to write documentation in comment blocks
co-located with code.
}
\examples{
hello()
}
答案 0 :(得分:7)
通过@hadley,&#34;不要使用@ name hello。这会覆盖默认命名&#34;和#34;有时你需要重新启动R,因为devtools和dev docs有一些错误&#34;
所以,如果我把我的hello.R文件更改为:
#' hello
#'
#' This is a mostly empty package to learn roxygen documentation.
#'
#' Hello allows me to learn how to write documentation in comment blocks
#' co-located with code.
"_PACKAGE"
#' hello
#'
#' This function returns "Hello, world!".
#' @export
#' @examples
#' hello()
hello <- function() {
print("Hello, world!")
}
然后document()
生成hello-package.Rd和hello.Rd文件。加载library(hello)
后,package?hello
提供了包文档,?hello
提供了函数文档,正如我拍摄的那样!
再次感谢你,@ hadley!
答案 1 :(得分:0)
正如 Johan Larsson 和 brendan 在对 this answer 的评论中所指出的,函数的别名似乎被包覆盖了。
提到了here 和here 的解决方案。它是添加 @aliases {pkgname}-package
(在本例中为 @aliases hello-package
)。
答案 2 :(得分:0)
看到反复说需要加@aliases {pkgname}-package
,但是我不清楚是在hello函数的注释块中还是在包doc块中。
剧透警告:它在包文档块中:
#' hello
#'
#' This is a mostly empty package to learn roxygen documentation.
#'
#' Hello allows me to learn how to write documentation in comment blocks
#' co-located with code.
#' @aliases hello-package
"_PACKAGE"
#' hello
#'
#' This function returns "Hello, world!".
#' @export
#' @examples
#' hello()
hello <- function() {
print("Hello, world!")
}