0

R を使用する長期プロジェクトでは、常に使用する約 50 個の関数と、たまに使用する別の 10 個または 15 個の関数のセットがあります。これらのほとんどは、私が直接使用する関数ではありません。これらは、私が直接使用するものを定義するために使用したヘルパー関数です。R データ ファイルからデータ オブジェクトを読み込むとき、オブジェクトに付けた名前を常に覚えているとは限らないため、実行ls()して読み込んだ内容を確認します。ただし、ソース doe ファイルをロードした場合は、出力を視覚的にふるいにかけてデータ オブジェクトを微調整する必要があり、これは明らかに不便です。

そこで、関数を R パッケージにラップしました。パッケージをロードするだけなら、すべて問題ありません。関数を使用できますがls()、データ オブジェクトしか表示されません。

しかし、私は新しい機能を追加し続けています。そして、パッケージの再作成は完全に簡単ではないことがわかったので、パッケージの再作成に取り掛かるまで、とにかく多くの時間、ソース ファイルから関数をロードすることになります。

もちろん、パッケージ構築プロセスを今まで以上に自動化したり、新しい関数を別のソース ファイルに分割したりできます。関数を別のパッケージに分割することもできます。これが役立つかもしれません。ヘルパー関数は、直接呼び出す関数のクロージャーを介してのみ使用できるようにすることができると思います--私はそれを試していません-しかし、そうしたい場合にヘルパーを直接使用することはできません。もっと簡単な方法があればやり過ぎです。そして、それが私が思っていることです: 私が見逃していた簡単なトリックがあるかどうか - 関数を使用できるようにする方法ですが、関数をリストせずに、持っているデータ オブジェクトを簡単に表示できるようにする方法です。そうでない場合は、OKですが、尋ねる価値があると思いました. ありがとう。

これらの質問: r で個人的な関数を非表示 にし、関数以外のすべての変数を削除すると 、非常に役立つ答えが得られます。上記のことを達成するための最も簡単な方法は何ですか?

4

2 に答える 2

10

lsf.strは名前空間内の関数のベクトルを返すため、これを使用して の出力からそれらの名前を削除できますls

setdiff(ls(), lsf.str())
于 2013-03-29T16:09:00.003 に答える
3

関数をパッケージ構造のフォルダー (つまり、R というサブフォルダー) に置き、package:devtools を使用します。必要なのはload_all("myfuncs")、R コードを編集するときだけです。すべてが R に再ロードされ、リストを台無しにすることはありませんls()。これをさらに進める必要がある場合は、簡単にパッケージ化して文書化できます。しかし、それは義務ではありません。load_all編集直後です。

于 2013-03-29T16:18:24.413 に答える