5

R では、関数のソースを、関数が単に別のオブジェクトであると見なすことができます。

ソースが保存されているファイルを知らなくても、このソース コードを検索する方法を探しています。

たとえば、関数に関数shapiro.testが含まれているかどうかを知りたい場合がありますsort(含まれています)。

shapiro.test文字列または文字列のベクトルの場合、使用します

grep('sort', shapiro.test)

しかしshapiro.test、関数と同様に、これは「エラー in as.character(x) : タイプ 'closure' をタイプ 'character' のベクトルに強制することはできません」というエラーを出します。

関数を文字列に強制しようとしてもうまくいきませんでした。おまけとして、コンパイル時に基本関数を検索できるとは思っていません。

4

2 に答える 2

8

ここで使用するソリューションdeparse

> grep ("sort", deparse(shapiro.test))
[1] 5
于 2013-10-24T11:11:03.293 に答える
3

関数を でラップするcapture.outputと、各行が文字ベクトルの要素に変換されます。

> grep("sort",capture.output(shapiro.test))
[1] 5 

edit(shapiro.test)または、 で指定されたテキスト エディターを呼び出して使用options(editor=)し、関数を検索することもできます。

于 2013-10-24T11:08:03.213 に答える