2009-11-28 5 views
5

Oft in R gibt es ein Dutzend Funktionen über so viele Pakete verstreut - von denen alle haben den gleichen Zweck, aber natürlich unterscheiden sich in Genauigkeit, Leistung, Dokumentation, theoretische Strenge und so weiter.finden, was Sie in R Need: Fokussierte innerhalb R Suche und alle (3,500+) CRAN Pakete

Wie finden Sie diese - aus R und sogar aus den Reihen der CRAN-Pakete, die Sie nicht installiert haben?

So zum Beispiel: die generische Handlung Funktion. Sekundär Zecken Einstellung ist viel einfacher, eine Funktion außerhalb des Basispakets mit:

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

Natürlich Grundstück in R Kern, aber minor.tick ist nicht, es ist eigentlich in Hmisc.

Natürlich, das ist nicht in der Dokumentation für Plot angezeigt, noch sollten Sie es erwarten.

Ein weiteres Beispiel: Dateneingabeargumente Plot kann durch ein Objekt aus der Funktion hexbin, wieder zurückzugeführt werden, ist diese Funktion aus einer Bibliothek außerhalb des R-Kern.

Was wäre toll, ist offensichtlich ein programmatischer Weg, um diese Funktion Argumente aus den verschiedenen Bibliotheken und in einem einzigen Namensraum zu setzen, sie zu sammeln?

* edit: (versuchen, mein Beispiel gerade oben deutlicher zu reformieren :) die Argumente Plot im R-Kern zur Verfügung gestellt, z. B. Einstellung der Achse Tick Frequenz sind xaxp/yaxp; Man kann aber auch ein/t/f über eine Funktion außerhalb des Basispakets setzen, wie in der minor.tick-Funktion des Hmisc-Pakets - aber das wüssten Sie nicht, wenn Sie sich nur die Signatur der Plot-Methode ansehen . Gibt es eine Meta-Funktion in R für das? *

Bisher, wie ich über sie kommen, ich habe sie manuell worden sammeln, wobei jeder Satz in einem einzigen TextmateSchnipsel (zusammen mit der begleitenden Bibliothek gesammelt Einfuhren). Dies ist nicht so schwierig oder zeitraubend, aber ich kann mein Snippet nur aktualisieren, wenn ich etwas über diese zusätzlichen Argumente/Parameter herausfinde. Gibt es einen kanonischen Weg, dies zu tun, oder zumindest einen einfacheren Weg?

Nur für den Fall, dass das nicht klar war, ich spreche nicht über den Fall, wo mehrere Pakete Funktionen für die gleiche Statistik oder Sicht (z. B. 'Boxplot' im Basispaket, 'boxplot.matrix' in gplots) zur Verfügung stellen und "bplots" in Rlab). Was ich spreche, ist der Fall, in dem der Funktionsname für zwei oder mehr Pakete gleich ist.

Antwort

5

Das Paket "sos" ist eine ausgezeichnete Ressource. Die primäre Schnittstelle ist der Befehl "findFn", der eine Zeichenfolge (Ihren Suchbegriff) akzeptiert und die "Funktions" -Einträge in der Site Search-Datenbank von Johnathan Baron durchsucht und die Einträge, die den Suchbegriff enthalten, in einem Datenrahmen (von Klasse "findFn").

Die Spalten dieser Datenrahmen sind: Graf, MaxScore, TotalScore, Paket, Funktion, Datum, Note, Beschreibung und Link-. Wenn Sie in einer beliebigen Zeile auf "Link" klicken, wird sofort die Hilfeseite angezeigt.

Ein Beispiel: Angenommen, Sie wollten alle Faltungsfilter über alle 1800+ R-Pakete finden.

Diese Abfrage wird den Begriff "Convolve" aussehen, mit anderen Worten, das muss nicht der Funktionsname sein.

Durch Eingabe von "cf" wird eine HTML-Tabelle aller gefundenen Übereinstimmungen zurückgegeben (in diesem Fall 23). Diese Tabelle ist ein HTML-Rendering des Datenrahmens, der gerade oben erwähnt wurde. Besonders praktisch ist, dass jede Spalte ("Count", "MaxScore" usw.) durch Klicken auf die Spaltenüberschrift sortiert werden kann, sodass Sie die Ergebnisse nach "Score", "Package Name" usw. anzeigen können.

(Als Nebenbei: Bei der Ausführung dieser genauen Abfrage war eines der Ergebnisse die Funktion "panel.tskernel" in einem Paket namens "gitterExtra". Ich wusste nicht, dass dieses Paket Zeitreihenfilter enthielt und ich bezweifle, dass ich Ich hätte es sonst entdeckt.

+0

Yup, 'sos' ist ein großartiges Paket. Tut mir leid, wenn ich den Punkt verpasse, aber hast du' RSiteSearch() 'versucht, oder frage 'rseek.org' Wie 'findFn()' funktioniert (Ich werde die Quelle studieren, wenn ich etwas Zeit habe), aber 'rseek.org' hat großartige Suchfunktionen, es ist Google-powered ... also ... hoffe es hilft! – aL3xa

+0

nice zu wissen! mazing, wie viel nützliche Sachen du auf SO findest! –

1

Ihre Frage ist nicht leicht zu beantworten. Es gibt keine definitive Funktion.

formals ist die Funktion, die namens Argumente zu einer Funktion und die Standardwerte in einer benannten Liste, aber man kann immer variable Argumente durch die ... Parameter und versteckte benannten Argumente mit eingebetteter hadArg Funktion gibt. Um eine Liste dieser zu erhalten, müssten Sie getAnywhere verwenden und dann den Ausdruck für den hasArg scannen.Ich kann mir keinen automatischen Weg vorstellen, es selbst zu machen. Das heißt, wenn die Funktionen versteckte Argumente nicht dokumentiert sind.

Verwandte Themen