Trouver quel élément d'un vecteur est comprise entre deux valeurs dans R
J'ai deux vecteurs x
et y
. Je voudrais trouver des éléments de x
sont entre les deux éléments de vecteur y
. Comment puis-je le faire dans la R?
x = c( .2, .4, 2.1, 5.3, 6.7, 10.5)
y = c( 1, 7)
J'ai écrit le code suivant, mais il ne me donne pas le bon résultat.
> x = x[ x >= y[1] && x <= y[2]]
> x
numeric(0)
Résultat devrait ressembler à ceci:
res = c(2.1, 5.3, 6.7)
Les futurs lecteurs peuvent également être intéressé par
Voir aussi cette question connexe et plus d'infos sur
findInterval
, ce qui n'est pas tout à fait ce qui est nécessaire ici, mais il est un autre outil pour trouver deux valeurs d'un nombre est compris entre.Voir aussi cette question connexe et plus d'infos sur
&
et &&
dans question.OriginalL'auteur rose | 2013-12-23
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la recherche pour le &, pas &&:
Édité à expliquer. Voici le texte de
?'&'
.Ainsi, lorsque vous avez utilisé
&&
, il est retourné FALSE pour le premier élément de votrex
et de la fin.OriginalL'auteur josliber
Il y a deux fonctions de confort pour
between
inclus dans ledplyr
etdata.table
paquetsPour retourner les valeurs souhaitées
Une autre option à l'aide de findInterval
Il semble y avoir une légère (microsecondes) l'avantage de vitesse pour
findInterval
en utilisant des auteurs vecteur d'originemis à jour avec de grandes vecteur
Résultats montrent léger avantage pour
data.table
avec un grand vecteur, mais en réalité ils sont suffisamment proches pour que je l'avais utilisent quel que soit le forfait que vous avez chargél'indice de référence a été mis à jour avec un 1e8 vecteur de longueur. Les résultats pour un grand vecteur faveur
data.table
mais sera susceptible d'être cohérent avec ce que le paquet que vous utilisez déjà avec vos données.OriginalL'auteur manotheshark
Si
y
a plus de deux éléments, il pourrait être utile:OriginalL'auteur G. Cocca