J'ai lu la documentation et j'ai essayé de la googler. ce devrait être une chose simple, mais il semblerait que ce ne soit pas pour moi; Je me lance donc courageusement et demande si quelqu'un ici pourrait m'expliquer comment fonctionne la fonction between()
de Dplyr.
# Explanation documentation
between(x, left, right)
x A numeric vector of values
left, right: Boundary values
Je comprends qu'un vecteur est un tableau unidimensionnel, donc je suppose que c(1:7)
est un vecteur, non? J'ai essayé d'utiliser l'exemple fourni dans la documentation comme modèle pour rechercher des vols juillet-septembre, mais les informations suivantes ne font que renvoyer une erreur:
# 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
Je me sens vraiment idiot de poser cette question, mais toute aide pour la comprendre sera grandement appréciée. Je m'excuserais également de ne pas poser une question bien définie; comme je l’apprécie probablement, je ne sais vraiment pas comment le formuler autrement que «je ne l’ai pas».
between
n'a rien de spécial - toute autre fonction de R aurait conduit au même problème. Votre confusion provient du fait que dplyr possède de nombreuses fonctions vous permettant de travailler sur les noms de colonnes de data.frame comme s'il s'agissait de variables normales; par exemple:
filter(flights, month > 9)
Cependant,between
n'est pas l'une de ces fonctions . Comme mentionné, il s’agit simplement d’une fonction normale. Donc, si vous voulez l'utiliser, vous devez fournir des arguments de manière conventionnelle; par exemple:
between(flights$month, 7, 9)
Cela renverra un vecteur logique que vous pourrez désormais utiliser pour indexer votre data.frame:
flights[between(flights$month, 7, 9), ]
Ou, plus semblable à dplyr:
flights %>% filter(between(month, 7, 9))
Notez que ici, nous utilisons maintenant une évaluation non standard. Mais l'évaluation est effectuée par filter
, pas par between
. between
est appelé (par filter
) à l'aide de l'évaluation standard.
Je suppose que vous le voulez comme ça:
library(nycflights13)
library(dplyr)
flights %>% filter(between(month,7,9))
Je vois entre-temps que cette solution est également apparue dans les commentaires.
filtre (vols, entre (mois, 7,9)) semble bien fonctionner