2013-10-24 9 views
5

In R, è possibile visualizzare l'origine di una funzione poiché una funzione è semplicemente un altro oggetto.Ricerca di un codice sorgente delle funzioni

Sto cercando un modo per la ricerca in questo codice sorgente, senza conoscere il file che la sorgente viene salvato in.

Per esempio, potrei voler sapere se la funzione shapiro.test contiene la funzione sort (si lo fa).

Se shapiro.test era una stringa o un vettore di stringhe che userebbero

grep('sort', shapiro.test) 

Ma, come shapiro.test è una funzione, questo dà l'errore di errore" a as.character (x): non può costringere tipo ' chiusura 'al vettore di tipo' carattere '".

Non ho avuto fortuna a provare a forzare la funzione su una stringa. Proprio come un extra, non mi aspetto di essere in grado di cercare attraverso le funzioni di base man mano che vengono compilate.

risposta

8

Ecco una soluzione che utilizza deparse:

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

È possibile eseguire il wrapping della funzione in capture.output, che convertirà ciascuna linea in un elemento in un vettore di caratteri.

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

Oppure si può semplicemente chiamare edit(shapiro.test) e utilizzare l'editor di testo specificato da options(editor=) per la ricerca in funzione.

+0

Entrambe le risposte sono simili ed eccellente. Ho dato il "giusto" all'altra risposta, mi è sembrata leggermente più ordinata. Grazie! – timcdlucas