2017-10-26 7 views
0

私の会社で役に立ついくつかの機能を備えたパッケージを作成しました。最近、誰もがアクセスできる必要はなく、パッケージの他の(エクスポートされた)関数から内部的に呼び出されるヘルパー関数があるように、パッケージを再構築しました。これらのヘルパー関数は名前空間にエクスポートされません(.Rファイルの#' @exportはありません)。今自作のRパッケージが独自の機能を見つけられない

、私は「主要」(エクスポート)関数のいずれかを呼び出すときに、私はエラーメッセージ(本当の関数名)を取得:major_functionで

エラー():機能「helper_functionを見つけることができませんでしたが「

イムかなりの建物のパッケージで新しいが、(https://cran.r-project.org/web/packages/roxygen2/vignettes/namespace.htmlから)私はこれまで理解したものから、どちらもヘルパー関数をエクスポートするために、また、主要な機能の.Rファイルに#' importFrom my_package helper_functionを追加する必要があってはなりません。

これを試してみると、実際にはパッケージのチェック時にエラーが発生しました。私もmy_package:::helper_functionでヘルパー関数を呼び出そうとしましたが、これは、このような同じパッケージから関数を呼び出す必要はほとんどないはずです。

は多分有用な情報:

エラーは、私は内部的にhelper_functionを呼び出しmajor_function_2を呼び出すmajor_function_1を呼び出す場合にのみ発生します。

答えて

0

私はあなたの状態よりもあなたの問題があると思います。すべての関数が同じ名前空間で定義されている限り(これは、すべての関数が同じフォルダ内の.Rファイルに存在する必要があることを意味します)、呼び出し関数はそれに応じてヘルパー関数を見つける必要があります。 ヘルパー関数が何らかの形でネストされていると思われますが、それが問題の原因です。

あなたの名前空間構造を再確認するか、ここにあなたのパッケージの簡単な概要を投稿することをお勧めします。

もう1つの理由は、あなたのパッケージルートのNAMESPACE-file(おそらくあなたはこのファイルを生成するRoxygenドキュメントを再コンパイルしていないかもしれません)にあなたの 'mayor_function2'をエクスポートせず、呼び出し関数 'mayor_function1'の影。これを確認し、クリーンコンパイルから再実行してください。

+0

ネストされたヘルパー関数の問題点は何ですか?関連する問題を避けるにはどうすればいいですか? –

+0

名前空間を正しく追跡する限り問題はありません。これは、パッケージにローカルである場合、それらがエクスポートされた関数と同じ名前空間に存在することを確認します。別のパッケージであれば、そのパッケージをインポートし、このパッケージがそれらをエクスポートすることが必要です(もし影響を与えることができれば)。 [また、パッケージとRoxygenを再コンパイルすることを忘れないでくださいいつでもきれいな環境から:)] –

+0

私は構造をもう一度チェックし、何も変更していない、パッケージを再コンパイルして、それは働いた。私は前に何が間違っていたのか分かりません。私はsomehoがクリーンな再コンパイルせずに(私はこれをやったと思っていたにしても)さまざまなものを変えてしまったと思います。 –

関連する問題