9

私はroxygenを初めて使用し、それを使用して新しい/カスタムパッケージをすばやく作成する方法を見つけるのに苦労しています.

つまり、コマンドを実行できるように、usingpackage1というパッケージを作成することが最小要件であることを知りたいです。devtoolsroxygen2/3

require(package1)
fun1(20)
fun2(20)

それぞれ 2000 と 4000 のランダム法線を生成する

それでは、最も単純な例を見てみましょう。

私が2つの機能を持っていてfun1fun2

fun1 <- function(x){
    rnorm(100*x)
}

fun2 <- function(y){
    rnorm(200*y)
}

パラメータは数値で、戻り値は数値です。これは S3 メソッドではないことは確かです。タイトルを fun1 と fun2 と呼びましょう....他にどのような情報を提供する必要があるかわかりません。fun1 と fun2 を別々の.Rファイルに入れ、abit を追加することはできます#'が、roxygen に関連するすべての要件を含めることはできません。名前空間の名前は fun1 と fun2 だけだと思いますか? パッケージの説明は、私に関連する一般的な情報にすぎません...そしてパッケージの機能ですか?

ステップバイステップのガイドは喜んで受け取ります。

編集:以下は、私がどこまで始めたかです...

次のようにしてパッケージを作成できます...しかし、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’
4

2 に答える 2

20

@hadleyがコメントで package.skeleton を使用しないと言っていることに驚きました。を使用package.skeletonし、roxygen コメント ブロックを追加してから、「man」ディレクトリ内のすべてのファイルを削除して、roxygenize. ただし、Hadley は "Nooooooooo" と言っているので、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

次に、「R」というディレクトリを作成し、各関数のファイルを追加します (または、必要に応じて、両方の関数を同じファイルに入れることもできます)。fun1.R と fun2.R の 2 つのファイルを作成しました。

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の関数buildinstall関数を使用できます

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を使用する非常に多くのパッケージの 1 つを調べたほうがよいでしょう。

これは 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)
}
于 2012-11-12T17:56:31.673 に答える
1

ずっと後- RoxygenReady に最小限の Roxygen アノテーション スケルトンを使用して関数を準備させることができます。基本的に、2 つの入力関数から Roxygen2 の入力である GSee の回答に移動します。

于 2016-02-28T14:39:27.937 に答える