Rで必要なものを見つける:Rおよびすべての(3,500+)CRANパッケージ内での集中検索
-
06-07-2019 - |
質問
Rには多くの場合、多くのパッケージに散在する多数の関数があります。それらはすべて同じ目的を持っていますが、もちろん精度、パフォーマンス、ドキュメント、理論的厳密さなどが異なります。
これらをどのように見つけるのですか?R内から、またインストールしていないCRANパッケージの中からでも
たとえば、汎用の プロット 関数。基本パッケージの outside 関数を使用すると、セカンダリティックの設定がはるかに簡単になります。
minor.tick(nx=n, ny=n, tick.ratio=n)
もちろん plot はRコアにありますが、 minor.tick はそうではなく、実際には Hmisc にあります。
もちろん、それは plot のドキュメントには表示されません。
別の例: plot へのデータ入力引数は、関数 hexbin から返されるオブジェクトによって提供できます。この関数もライブラリ outsideからのものです Rコア。
これらの関数の引数をさまざまなライブラリから収集し、それらを単一の名前空間に配置するプログラム的な方法は明らかに素晴らしいでしょうか?
* edit:(上記の例をより明確に説明しよう:) Rコアで提供される plot の引数、たとえば、軸の目盛りの頻度を設定するのはxaxp / yaxpです。ただし、Hmiscパッケージのminor.tick関数のように、ベースパッケージの外部の関数を使用してa / t / fを設定することもできますが、プロットメソッドのシグネチャを見るだけではわかりません。 。このためのRにメタ関数はありますか?*
これまでのところ、私はそれらに出会い、手動でそれらを収集してきました。各セットは単一の TextMate スニペット(アテンダントライブラリのインポートと共に)に収集されました。これはそれほど難しくも時間もかかりませんが、これらの追加の引数/パラメータについて知ると、スニペットを更新することしかできません。これを行うための標準的なRの方法、または少なくとも簡単な方法はありますか?
それが明確ではない場合、複数のパッケージが同じ統計またはビューに向けられた機能を提供する場合については話していません(例えば、基本パッケージの「boxplot」、gplotsの「boxplot.matrix」、およびRlabの「bplots」)。私が話しているのは、関数名が複数のパッケージで同じ場合です。
解決
" sos "パッケージは優れたリソースです。主なインターフェースは" findFn "です。コマンド(文字列(検索用語)を受け入れ、"関数"をスキャンします) Johnathan Baronのサイト検索データベースのエントリ、およびデータフレーム(クラス" findFn"の)に検索語を含むエントリを返します。
このデータフレームの列は、カウント、 MaxScore 、 TotalScore 、パッケージ、です。機能、日付、スコア、説明、およびリンク。 「リンク」をクリックします。エントリの行にあるとすぐにヘルプページが表示されます。
例:すべての1800以上のRパッケージですべての畳み込みフィルターを検索するとします。
library(sos)
cf = findFn("convolve")
このクエリは、「畳み込む」という用語を検索します。つまり、関数名である必要はありません。
" cf"の入力見つかったすべての一致のHTMLテーブルを返します(この場合は23)。この表は、上記のデータフレームのHTMLレンダリングです。特に便利なのは、列ヘッダーをクリックして各列(「Count」、「MaxScore」など)をソートできるため、「Score」、「Package Name」、など。
(余談ですが、その正確なクエリを実行すると、結果の1つは、「latticeExtra」と呼ばれるパッケージ内の関数「panel.tskernel」でした。このパッケージには時系列フィルターが含まれていなかったため、そうでなければ、それを発見できただろうとは思わない。
他のヒント
あなたの質問に答えるのは簡単ではありません。決定的な機能はありません。
formals
は、関数に named 引数を指定し、名前付きリストのデフォルトを指定する関数ですが、を使用して常に可変引数を指定できます。 ..
パラメーターと、 hadArg
関数が埋め込まれた非表示の名前付き引数。それらのリストを取得するには、getAnywhereを使用してから、hasArgの式をスキャンする必要があります。自分で自動で行う方法は考えられません。関数の隠された引数が文書化されていない場合です。