2013-10-24 8 views
5

In R können Sie die Quelle einer Funktion als eine Funktion einfach als ein anderes Objekt anzeigen.Durchsuchen eines Funktionsquellcodes

ich nach einem Weg suchen durch diesen Quellcode zu suchen, ohne die Datei zu wissen, dass die Quelle in gespeichert wird.

Zum Beispiel könnte ich wissen wollen, ob die Funktion shapiro.testsort die Funktion enthält (es tut).

Wenn shapiro.test war ein String oder ein Vektor von Strings I

grep('sort', shapiro.test) 

verwenden würde, aber als shapiro.test eine Funktion ist, das gibt die Fehlermeldung „Fehler bei as.character (x): kann Typen nicht zwingen ' Schließung 'zum Vektor vom Typ' Charakter '".

Ich hatte kein Glück versucht, die Funktion zu einer Zeichenfolge zu zwingen. Nur als Extra erwarte ich nicht, in der Lage zu sein, Basisfunktionen zu durchsuchen, während sie kompiliert werden.

Antwort

8

Hier ist eine Lösung mit deparse:

> grep ("sort", deparse(shapiro.test)) 
[1] 5 
3

Sie können die Funktion in capture.output umbrechen, die jede Zeile in ein Element in einem Zeichenvektor konvertiert.

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

Oder Sie könnten nur edit(shapiro.test) anrufen und den Texteditor von options(editor=) angegeben verwenden, um durch die Funktion zu suchen.

+0

Beide Antworten sind ähnlich und ausgezeichnet. Ich gab der anderen Antwort das "Richtige", schien mir nur etwas besser zu sein. Vielen Dank! – timcdlucas