Trovare ciò di cui hai bisogno in R: ricerca mirata all'interno di R e di tutti (oltre 3.500) pacchetti CRAN

StackOverflow https://stackoverflow.com/questions/1812702

  •  06-07-2019
  •  | 
  •  

Domanda

Spesso in R, ci sono una dozzina di funzioni sparse in altrettanti pacchetti - tutti con lo stesso scopo ma ovviamente differiscono per accuratezza, prestazioni, documentazione, rigore teorico e così via.

Come li trovi, all'interno di R e persino tra i pacchetti CRAN che non hai installato?

Ad esempio: la generica trama . L'impostazione di tick secondari è molto più semplice usando una funzione outside del pacchetto base:

minor.tick(nx=n, ny=n, tick.ratio=n)

Naturalmente trama è in R core, ma minor.tick non lo è, in realtà è in Hmisc .

Ovviamente, ciò non viene visualizzato nella documentazione per trama , né dovresti aspettartelo.

Un altro esempio: argomenti di input di dati per trama possono essere forniti da un oggetto restituito dalla funzione hexbin , ancora una volta, questa funzione proviene da una libreria esterna di R core.

Ciò che sarebbe bello ovviamente è un modo programmatico per raccogliere questi argomenti di funzione dalle varie librerie e metterli in un unico spazio dei nomi?

* modifica: (cercando di ri-dichiarare il mio esempio appena sopra più chiaramente :) gli argomenti per tracciare forniti in R core, ad esempio, l'impostazione della frequenza di tick dell'asse sono xaxp / yaxp; tuttavia, si può anche impostare a / t / f tramite una funzione al di fuori del pacchetto base, di nuovo, come nella funzione minor.tick dal pacchetto Hmisc - ma non si può sapere che solo guardando la firma del metodo di trama . Esiste una meta funzione in R per questo? *

Finora, quando li ho incontrati, li ho raccolti manualmente, ogni set è stato raccolto in un singolo TextMate snippet (insieme alle importazioni delle librerie degli assistenti) . Non è difficile o richiede tempo, ma posso aggiornare il mio frammento solo quando scopro questi argomenti / parametri aggiuntivi. Esiste un modo canonico R per farlo, o almeno un modo più semplice?

Nel caso non fosse chiaro, non sto parlando del caso in cui più pacchetti forniscono funzioni dirette alla stessa statistica o vista (ad esempio, 'boxplot' nel pacchetto base; 'boxplot.matrix' in gplots; e 'bplots' in Rlab). Quello di cui sto parlando è il caso in cui il nome della funzione è lo stesso in due o più pacchetti.

È stato utile?

Soluzione

Il " sos " il pacchetto è una risorsa eccellente. La sua interfaccia principale è " findFn " comando, che accetta una stringa (il termine di ricerca) e scansiona la funzione " " voci nel database di ricerca del sito di Johnathan Baron e restituisce le voci che contengono il termine di ricerca in un frame di dati (di classe "trovaFn").

Le colonne di questo frame di dati sono: Conteggio , MaxScore , TotalScore , Pacchetto , Funzione , Data , Punteggio , Descrizione e Link . Facendo clic su " Link " nella riga di qualsiasi voce verrà immediatamente visualizzata la pagina di aiuto.

Un esempio: supponiamo di voler trovare tutti i filtri di convoluzione in tutti i pacchetti 1800+ R.

library(sos)
cf = findFn("convolve") 

Questa query apparirà con il termine "contorto", in altre parole, che non deve essere il nome della funzione.

Digitando " cf " restituisce una tabella HTML di tutte le corrispondenze trovate (23 in questo caso). Questa tabella è un rendering HTML del frame di dati che ho citato sopra. Ciò che è particolarmente conveniente è che ogni colonna (" Count " ;, " MaxScore " ;, ecc.) È ordinabile facendo clic sull'intestazione della colonna, in modo da poter visualizzare i risultati con " Punteggio " ;, con " Nome pacchetto " ;, ecc.

(A parte: quando si esegue quella query esatta, uno dei risultati era la funzione "panel.tskernel" in un pacchetto chiamato "quoticeExtra". Non sapevo che questo pacchetto avesse filtri di serie temporali e dubito che l'avrei scoperto altrimenti.

Altri suggerimenti

Non è facile rispondere alla tua domanda. Non esiste una funzione definitiva.

formals è la funzione che fornisce gli argomenti nominati a una funzione e i loro valori predefiniti in un elenco denominato, ma è sempre possibile avere argomenti variabili tramite . .. e argomenti nascosti con nome con funzione hadArg incorporata. Per ottenere un elenco di quelli dovresti usare un getAnywhere e quindi scansionare l'espressione per l'hashArg. Non riesco a pensare a un modo automatico di farlo da solo. Cioè se le funzioni argomenti nascosti non sono documentate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top