2016-05-17 11 views
2

いくつかの依存関係を持つパッケージを作成しようとしています。 library()を使用して依存関係を手動で読み込むことができますが、パッケージと一緒に自動的に読み込まれるようにしたいと思います。 DESCRIPTIONファイルのImportsという属性がジョブに使用できるとは思っていましたが、それは私にとっては効果がありません。パッケージの作成時に依存関係を指定する方法は?

だから私は完全に新しいセッションでゼロから始めています:

sessionInfo() 

R version 3.3.0 (2016-05-03) 
Platform: x86_64-apple-darwin13.4.0 (64-bit) 
Running under: OS X 10.11.4 (El Capitan) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] tools_3.3.0 

その後、私は私のセッションに再び見て実際に

Imports: 
dplyr, 
zipcode, 
readxl, 
mosaic 

を輸入し、私のパッケージ、私は指定された依存関係をロードmypackage_0.1.0が正しくロードされました。

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] mypackage_0.1.0 

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.4  nloptr_1.0.4  plyr_1.8.3   tools_3.3.0  mosaic_0.13.0  testthat_1.0.2  digest_0.6.9  
[8] lme4_1.1-12  zipcode_1.0  memoise_1.0.0  gtable_0.2.0  nlme_3.1-127  lattice_0.20-33 mgcv_1.8-12  
[15] Matrix_1.2-6  DBI_0.4-1   parallel_3.3.0  SparseM_1.7  ggdendro_0.1-20 gridExtra_2.2.1 withr_1.0.1  
[22] dplyr_0.4.3  stringr_1.0.0  roxygen2_5.0.1  MatrixModels_0.4-1 devtools_1.11.1 grid_3.3.0   nnet_7.3-12  
[29] R6_2.1.2   readxl_0.1.1  mosaicData_0.13.0 minqa_1.2.4  reshape2_1.4.1  ggplot2_2.1.0  car_2.1-2   
[36] magrittr_1.5  scales_0.4.0  splines_3.3.0  MASS_7.3-45  assertthat_0.1  pbkrtest_0.4-6  colorspace_1.2-6 
[43] quantreg_5.21  stringi_1.0-1  munsell_0.4.3  crayon_1.3.1 

私は、 "ロードされた名前空間"パッケージのいずれかから他の関数​​をネストする関数を書くと、エラーが出ます。例えば、:

私が書いているパッケージの他の機能の中でのみ、依存関係の関数を使うことができたと思っていました。しかし、f()をパッケージの新機能として定義したところ、同じエラーが発生しました。

NAMESPACEファイルが保存され再読み込みされることを再確認することが推奨されています。

これはf()機能を持つ私のNAMESPACEファイルです。

# Generated by roxygen2: do not edit by hand 

export(chain_spreadsheet) 
export(f) 
export(mapping) 
export(stalary) 

しかし、ドキュメントを再生成してパッケージを再読み込みした後でも、私はまだ同じ問題があります。

+1

NAMESPACEファイルも更新しましたか? – cdeterman

+0

申し訳ありませんが、私は二重チェックしました。はい、私はNAMESPACEを更新しました。まだ動かない。 – Dambo

+0

表示している機能やパッケージ内の機能を参照していますか? NAMESPACEを更新したら、パッケージを再構築/再インストールする必要があります。これがまだ問題になっている場合は、おそらくNAMESPACEに質問に追加する必要があります。 – cdeterman

答えて

2

NAMESPACEファイルにもimportステートメントが必要です。これをroxygen2で自動的に行うには、@importメソッドを使用する必要があります。

あなたはroxygen2を再構築する場合例えば、どの.Rで

foo.R

#' @import dplyr 

# my other code 
... 

ファイル今名前空間が自動的に更新されます。これは、roxygen2がこれをすべて処理することになっているため、「手動で編集しないでください」という理由があります。必要な機能だけを使用するだけです。

+0

私はお詫び申し上げますが、部分的には機能しますが、なぜ 'readxl :: excel_sheehts'関数が見つからないのか分かりません。パッケージ 'readxl'は' sessionInfo() 'を呼び出すと' loeaded via namespace'ライブラリ内にありますが、明らかにRはそれを見ません。しかし、私は 'dplyr'に基づいた別の関数を持っています。これはあなたが言ったように読み込まれていて、うまく動いています。 – Dambo

+0

@Damboは「excel_sheehts」が誤字ですか?あなたが '@import readxl'を持っていることと、再構築後にNAMESPACEが両方を持っていることを確認してください。 – cdeterman

+0

申し訳ありませんが、私はタイプミスでした。そして、そうです、両方とも持っていて、私は 'sessionInfo()'を実行しているのを見ることができます(ただし、 "attached namespace"内ではなく、 "attached"内にありません)。ところで、記述ファイルにライブラリをインポートする目的が何であるかはまだ分かりません。その場合、各単一の関数に対して '@ import'を使用する必要があります。私は 'dplyr'と' readxl'の両方を使って、問題のより確実な複製を提供するために、後で新しいパッケージを作成します。ありがとう。 – Dambo

関連する問題