我很惊讶@hadley说不要在他的包中使用 package.sculpturecomment。我会用package.skeleton
,添加roxygen注释块,然后删除“man”目录下的所有文件并运行roxygenize
。然而,既然哈德利说“Nooooooooooo”,那么这是minimum您需要能够构建一个通过 R CMD 检查并导出函数的包。
创建名为“package1”的目录。在该目录下,创建一个名为“DESCRIPTION”的文件并将其放入其中(如果您愿意,可以适当编辑它):
描述
Package: package1
Type: Package
Title: What the package does (short line)
Version: 0.0.1
Date: 2012-11-12
Author: Who wrote it
Maintainer: Who to complain to <[email protected]>
Description: More about what it does (maybe more than one line)
License: GPL
现在创建一个名为“R”的目录,并为每个函数添加一个文件(或者,如果需要,您可以将两个函数放在同一个文件中)。我创建了 2 个文件:fun1.R 和 fun2.R
fun1.R
#' fun1
#' @param x numeric
#' @export
fun1 <- function(x){
rnorm(100*x)
}
fun2.R
#' fun2
#' @param y numeric
#' @export
fun2 <- function(y){
rnorm(200*y)
}
现在你可以roxygenize
你的包裹
R> library(roxygen2)
Loading required package: digest
R> list.files()
[1] "package1"
R> roxygenize("package1")
Updating collate directive in /home/garrett/tmp/package1/DESCRIPTION
Updating namespace directives
Writing fun1.Rd
Writing fun2.Rd
既然你提到了devtools在你的问题的标题中,你可以使用build
and install
开发工具中的函数
build('package1')
install('package1')
或者您可以退出 R 并使用 R 附带的工具来构建/检查/安装。
$ R CMD build package1
$ R CMD check package1_0.0.1.tar.gz
$ R CMD INSTALL package1_0.0.1.tar.gz
现在,再次启动 R 以使用新包。
$ R --vanilla -q
library(package1)
fun1(20)
fun2(20)
但是,弄清楚最低要求不太可能对您(或您的软件包的用户)有太大帮助。研究使用的众多软件包之一会更好roxgen2.
这是 fun1.R 文件的更好版本,它仍然没有使用它可以使用的所有 roxygen 标签,但比最低限度要好得多
修改后的fun1.R
#' fun1
#'
#' This is the Description section
#'
#' This is the Details section
#'
#' @param x numeric. this is multiplied by 100 to determine the length of the returned vector
#' @return a numeric vector of random deviates of length \code{100 * x}
#' @author your name
#' @seealso \code{\link{fun2}}
#' @examples
#' fun1(2)
#' length(fun1(20))
#' @export
fun1 <- function(x){
rnorm(100*x)
}