wake-up-neo.net

Wie funktioniert dplyrs zwischen

Ich habe die Dokumentation gelesen und habe versucht, sie zu googeln. es sollte eine einfache Sache sein, aber es scheint mir nicht so zu sein; also gehe ich mutig aus und frage mich, ob mir hier jemand erklären könnte, wie dplyrs between() funktioniert.

# Explanation documentation
between(x, left, right)

x            A numeric vector of values
left, right: Boundary values

Ich verstehe, dass ein Vektor ein eindimensionales Array ist, also nehme ich an, dass c(1:7) ein Vektor ist, oder? Ich habe versucht, das in der Dokumentation enthaltene Beispiel als Vorlage für die Suche nach Flügen im Juli und September zu verwenden, aber es wird nur ein Fehler ausgegeben:

# Example from documentation cont’d
x <- rnorm(1e2)
x[between(x, -1, 1)]

# Loading the library
library(nycflights13)

# Execute my hopeless attempt at between()
flights[between(month, 7, 9)]

# Output and error message
> flights[between(month, 7, 9)]
Error in between(month, 7, 9) : object 'month' not found

Ich habe das Gefühl, dass ich sehr froh bin, diese Frage zu stellen, aber jede Hilfe, um dies zu verstehen, wird sehr geschätzt. Ich würde mich auch entschuldigen, dass ich keine genau definierte Frage gestellt habe. Wie wahrscheinlich geschätzt wird, weiß ich wirklich nicht, wie ich es anders formulieren soll als "Ich verstehe es nicht".

13
Canned Man

between ist nichts Besonderes - jede andere Funktion in R hätte zu demselben Problem geführt. Ihre Verwirrung rührt von der Tatsache her, dass dplyr über viele Funktionen verfügt, mit denen Sie die Spaltennamen von data.frame wie normale Variablen bearbeiten können. zum Beispiel:

filter(flights, month > 9)

between ist jedoch keine dieser Funktionen . Wie gesagt, es ist einfach eine normale Funktion. Wenn Sie es also verwenden möchten, müssen Sie die Argumente auf herkömmliche Weise angeben. zum Beispiel:

between(flights$month, 7, 9)

Dadurch wird ein logischer Vektor zurückgegeben, und Sie können ihn jetzt verwenden, um Ihren data.frame zu indizieren:

flights[between(flights$month, 7, 9), ]

Oder eher dplyr-like:

flights %>% filter(between(month, 7, 9))

Beachten Sie, dass hier jetzt eine nicht standardmäßige Auswertung verwendet. Die Auswertung wird jedoch von filter durchgeführt, nicht von between. between wird (von filter) unter Verwendung der Standardauswertung aufgerufen.

24
Konrad Rudolph

Ich denke du willst es so:

library(nycflights13)
library(dplyr)

flights %>% filter(between(month,7,9))

Ich sehe inzwischen diese Lösung auch in den Kommentaren.

3
Wietze314

filter (Flüge zwischen (Monat 7,9)) scheint gut zu funktionieren

0