2017-10-27 16 views
0

RStudio v。1.0.1.153で新しいプロジェクトを "Rパッケージ"として作成しました。デフォルトでは、このような新しいRパッケージプロジェクトが構築し、リロードパッケージ(Ctrlキー+ Shiftキー+ B)を、その後、別のRセッションで簡単にロードすることで、簡単にアクセスすることができ新しいRパッケージにパッケージファイルを追加してアクセスする

hello <- function() { 
    print("Hello, world!") 
} 

テンプレート関数を含むファイルhello.Rが付属しています組み込みパッケージと関数の実行:

> library(mylibrary) 
> hello() 
[1] "Hello, world!" 

ここでは、パッケージ内の複数のファイルに機能を編成したいと思います。私はパッケージを再構築し、ライブラリを再ロードするとき、私は機能にアクセスすることはできません、しかし

helloYouToo <- function() { 
    print("Hello you too!") 
} 

:私は別の機能を持つパッケージの.\R\サブディレクトリに新しいファイルmethods.Rを追加

> library(mylibrary) 
> helloYouToo() 
Error in helloYouToo() : could not find function "helloYouToo" 

私にはいくつか質問があります。どのようにすべきであるI

  1. デバイドいくつかのファイル(だけではなく、単一のhello.Rファイル)にパッケージ・ファンクションファイルと関数がパッケージに含まれており、
  2. もアクセスするための好ましい方法は何されて定義されたように、 パッケージ内同じパッケージ内で別のファイル(例えばmethods.Rなど)に定義されているような関数ですか?
+0

ファイルを追加する際にいくつかの初心者用マニュアルを読もうとしましたが、パッケージのすべての機能を1つのファイルに書き込むことに専念するようです。 – Heikki

+1

NAMESPACEページで関数をエクスポートしましたか?あなたはドキュメントを構築するためにroxygenを使用していますか? "Rパッケージ"または "Rパッケージを使用したdevtools"だけを選択しましたか?あなたがまだいないなら、あなたはおそらく[Hadley's R packages guide](http://r-pkgs.had.co.nz/) – MrFlick

+0

を読んでください。私はR 3.4.2を使用しています。そこでdevtoolsをインストールし、roxygenをインストールした 'devtools :: load_all()'を実行しようとしました。次に、 'devtools :: load_all()'を実行することで、パッケージを作成しているRセッションで 'helloYouToo()'が利用可能になりました。しかし、別のRセッションではその機能を利用できませんでした。驚くべきことに、他のRセッションを再起動すると、 'ライブラリ(mylibrary)'が 'helloYouToo()'を利用できるようになりました。 – Heikki

答えて

0

@MrFlickが示唆したように、私は(依存関係を持つ)devtoolsroxygenをインストールすることで、いくつかのファイルオーバー機能を分割して管理します。

その後、パッケージを再ビルドすると、パッケージをロードするユーザーが他のファイルの新しい機能を使用できるようになりました。

Restarting R session... 

> library(mylibrary) 
> helloYouToo() 
[1] "Hello you too!" 

は、パッケージに二つの別々のファイルで定義された関数を使用する関数を定義することさえ可能であった。しかし、更新関数定義を利用できるようにするために、Rセッションを再起動する必要がありました

Restarting R session... 

> library(mylibrary) 
> helloDouble() 
[1] "Hello, world!" 
[1] "Hello you too!" 

に結果の

helloDouble <- function() { 
    hello() 
    helloYouToo() 
} 

それは

のように一般的ですので、私は名前空間ファイルをタッチする必要はありませんでした
exportPattern("^[[:alpha:]]+") 

パッケージで作成したすべての新機能をパッケージユーザーが利用できるようにします。

関連する問題