h.l*_*l.m 8 r devtools rd roxygen roxygen2
我是roxygen的新手,我很难看到如何使用它来快速创建一个新的/自定义包.
即我想知道最低要求是制作一个名为package1using 的包devtools,roxygen2/3以便我可以运行命令
require(package1)
fun1(20)
fun2(20)
Run Code Online (Sandbox Code Playgroud)
分别生成2000和4000个随机法线
让我们举一个最简单的例子.
如果我有两个功能fun1和fun2
fun1 <- function(x){
rnorm(100*x)
}
Run Code Online (Sandbox Code Playgroud)
和
fun2 <- function(y){
rnorm(200*y)
}
Run Code Online (Sandbox Code Playgroud)
params是数字,返回值是数字.我很确定这不是一个S3方法,让我们调用标题fun1和fun2 ....我不太确定我需要提供的其他信息.我可以将fun1和fun2放在单独的.R文件中并添加abit #'但不确定包含roxygen的所有相关要求,也不确定要包含哪些相关requiremetns以及如何使用它来创建rd文档以与包一起使用.我假设名称空间只有名称fun1和fun2?包裹描述只是一些与我有关的通用信息......以及包裹的功能?
任何一步一步的指南都会很高兴收到.
编辑:以下是我开始的距离......
我可以得到以下内容来创建一个pacakge ...但是不能使用roxygen来制作文档......
package.skeleton(list = c("fun1","fun2"), name = "package1")
Run Code Online (Sandbox Code Playgroud)
这里是我不确定我是否错过了一堆步骤......
roxygenise("package1")
Run Code Online (Sandbox Code Playgroud)
因此,当尝试安装时,我收到以下错误消息
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’
Run Code Online (Sandbox Code Playgroud)
GSe*_*See 20
我很惊讶@hadley说他的评论中没有使用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 <yourfault@somewhere.net>
Description: More about what it does (maybe more than one line)
License: GPL
Run Code Online (Sandbox Code Playgroud)
现在创建一个名为"R"的目录并为每个函数添加一个文件(或者,如果需要,可以将两个函数放在同一个文件中).我创建了2个文件:fun1.R和fun2.R
#' fun1
#' @param x numeric
#' @export
fun1 <- function(x){
rnorm(100*x)
}
Run Code Online (Sandbox Code Playgroud)
#' fun2
#' @param y numeric
#' @export
fun2 <- function(y){
rnorm(200*y)
}
Run Code Online (Sandbox Code Playgroud)
现在你可以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
Run Code Online (Sandbox Code Playgroud)
由于您在Q的标题中提到了devtools,因此您可以使用devtools中的build和install函数
build('package1')
install('package1')
Run Code Online (Sandbox Code Playgroud)
或者您可以退出R并使用R附带的工具来构建/检查/安装.
$ R CMD build package1
$ R CMD check package1_0.0.1.tar.gz
$ R CMD INSTALL package1_0.0.1.tar.gz
Run Code Online (Sandbox Code Playgroud)
现在,再次启动R以使用您的新包.
$ R --vanilla -q
library(package1)
fun1(20)
fun2(20)
Run Code Online (Sandbox Code Playgroud)
但是,确定最低要求不太可能对您(或您的包裹的用户)有所帮助.研究使用roxgen2的众多软件包中的一个,你会好得多.
这是fun1.R文件的一个更好的版本,它仍然没有使用它可能的所有roxygen标签,但是比最低限度的要好得多
#' 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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5415 次 |
| 最近记录: |