2016-05-17 8 views
-1

Ich habe einige Erfahrung in R und lerne Spark 1.6.1, indem ich zuerst die Implementierung von R in Spark erkunde.Warum unterscheidet sich sample() in SparkR von R?

stellte ich fest, daß die Syntax für die R Probe() Befehl in Funken unterscheidet:

Basis :: R: sample(x, size, replace)

Spark-R: sample(DataFrame, withReplacement, fraction)

base::sample(x, size, replace) noch funktioniert, aber maskiert von der Spark R-Version.

Weiß jemand, warum das so ist, wenn die meisten Befehle zwischen den beiden identisch sind?

Gibt es Anwendungsfälle, die ich gegeneinander verwenden sollte?

Hat jemand eine autoritative Liste der Unterschiede zwischen Spark R und Base :: R gefunden?

Danke!

+0

Es gibt viele Pakete der Maskenbasis Funktion und ändern Sie ihr Verhalten. Ich denke, Sie sollten die Dokumentation von 'base :: sample' und' SparkR :: sample' lesen, um Antworten auf einige Ihrer Fragen zu erhalten. Wenn Sie Ihre Lösung dafür erstellen, verwenden Sie einfach 'importFrom' in Ihrer NAMESPACE-Datei und verwenden Sie die von Ihnen benötigte. – jangorecki

+0

Vielen Dank für Ihren Kommentar @jangoreck. Ich denke, vielleicht haben Sie den Punkt der Frage verpasst. Ich weiß, dass das Maskieren ein häufiges Verhalten ist, und ich weiß, wie man die maskierte Version explizit auswählt. Die normale Verwendung von Maskierung besteht darin, eine ähnlich benannte Funktion für einen sehr unterschiedlichen Kontext bereitzustellen. In diesem Fall waren beide bemerkenswert ähnlich. Geben Sie einen Datenrahmen ein, nehmen Sie eine Teilmenge der Zeilen per Zufallsauswahl, geben Sie einen Datenrahmen aus. Die neue Version der Funktion mit marginal unterschiedlichen Parametern, die in einer anderen Reihenfolge präsentiert wurden, schien keinen Sinn zu ergeben. – SpiritusPrana

Antwort

2

Wenn Sie einen SparkR-Datenrahmen haben, müssen Sie die SparkR-API zum Sampling verwenden. Wenn Sie einen R-Datenrahmen haben, müssen Sie den Aufruf der Funktion basis :: R verwenden. SparkR ist nicht R und die Funktionsaufrufe sind nicht identisch.

Das Problem, das Sie haben, ist eines von masking.

+0

Danke @David. Das ist sehr hilfreich ... Da es an Dokumentation und Lehrmaterialien zur Interaktion zwischen R und SparkR fehlt, ist es nie ganz klar, ob ich einen R-Datenrahmen oder einen Spark-Datenrahmen habe. Gut zu wissen, dass wir eine Beispielfunktion für jede Art von df haben ... jetzt muss ich nur eine klare Methode ausarbeiten, um festzustellen, welche ich in einem bestimmten Variablennamen habe! – SpiritusPrana

+0

btw @David, Ihre Antwort wird aktualisiert, sobald mein Kudos um 1 erhöht wird – SpiritusPrana

0

Um den zweiten Teil der Frage zu befassen, zum Wohl des anderen, das folgt, fand ich, dass die Spark-Dokumentation der R-Funktionen in der Tat Liste, die maskiert sind: R Function Name Conflicts