我是roxygen的新手,正在努力查看如何使用它来快速创建新的/自定义的程序包。
IE。我想知道最低要求是使用package1
和devtools
制作一个名为roxygen2/3
的软件包,以便我可以运行命令
require(package1)
fun1(20)
fun2(20)
分别产生2000和4000个随机法线
因此,让我们以最简单的示例为例。
如果我有两个函数
fun1
和fun2
fun1 <- function(x){
rnorm(100*x)
}
和
fun2 <- function(y){
rnorm(200*y)
}
参数是数字,返回值是数字。我很确定这不是S3方法,让我们称呼标题fun1和fun2 .... im不太确定我还需要提供什么其他信息。我可以将fun1和fun2放在单独的
.R
文件中,并添加一些#'
,但不确定是否包括对roxygen的所有相关要求,也不确定要包括哪些内容作为相关的requiremetns以及如何使用它来创建与包装一起使用的rd文档。是。我猜想命名空间将仅具有名称fun1和fun2吗?而包装说明只是与我有关的一些通用信息...以及包装的功能?我们将很高兴收到任何分步指南。
编辑:以下是我要开始的距离...
我可以做到以下内容来创建一个pacakge ...但是不能使用roxygen来制作文档...
package.skeleton(list = c("fun1","fun2"), name = "package1")
这是我不确定是否缺少一堆步骤的地方...
roxygenise("package1")
因此,当尝试安装时,我收到以下错误消息
system("R CMD INSTALL package1")
* installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’
* installing *source* package ‘package1’ ...
** R
** preparing package for lazy loading
** help
Warning: /path.to.package/package1/man/package1-package.Rd:32: All text must be in a section
*** installing help indices
Error in Rd_info(db[[i]]) :
missing/empty \title field in '/path.to.package/package1/man/fun1.Rd'
Rd files must have a non-empty \title.
See chapter 'Writing R documentation' in manual 'Writing R Extensions'.
* removing ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library/package1’
最佳答案
我很惊讶@hadley说不要在他的comment中使用package.skeleton。我将使用package.skeleton
,添加roxygen注释块,然后删除“man”目录中的所有文件并运行roxygenize
。但是,由于Hadley说“Noooooooooo”,因此这是您能够构建通过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
由于您在Q的标题中提到了 devtools ,因此可以使用devtools中的
build
和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)
}
关于r - devtools roxygen软件包创建和rd文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13339021/