R gotcha: logique-et opérateur de combinaison de conditions est & a pas &&
Pourquoi ne pas subset()
travailler avec une logique et &&
opérateur de la combinaison de deux conditions?
> subset(tt, (customer_id==177 && visit_date=="2010-08-26"))
<0 rows> (or 0-length row.names)
mais ils chaque travail individuel:
> subset(tt, customer_id==177)
> subset(tt, visit_date=="2010-08-26")
(Souhaitez éviter d'utiliser de grandes variables temporaires - mon jeu de données est énorme)
- Voir aussi une question similaire à stackoverflow.com/a/6559049/210673
- Merci Aaron, mais que l'on est à l'abri des recherches de mots-clés, et vous ne pouvez pas effectuer de recherche sur les opérateurs (ponctuation). Il a également été pas correctement balisé (juste une correction), de sorte que les deux raisons, il n'aurait jamais montrer dans une recherche.
- Merci pour la fixation de la tags. C'est un difficile sujet de la recherche. Espérons-le, reliant l'ensemble des questions aidera à trouver des réponses utiles, aussi.
Vous devez vous connecter pour publier un commentaire.
À partir de la page d'aide pour
Logical Operators
, accessible par?"&&"
:& et && indiquer les opérateurs logiques et ET | et || indiquer le OU logique. La forme courte effectue elementwise comparaisons dans beaucoup de la même manière que les opérateurs arithmétiques. La forme longue évalue la gauche vers la droite de l'examen uniquement le premier élément de chaque vecteur. L'évaluation produit seulement jusqu'à ce que le résultat est déterminé. La forme longue est approprié pour la programmation de flux de contrôle et généralement privilégiées dans la si les clauses.
(R version 2.13-0)
En d'autres termes, lors de l'utilisation de
subset
, utiliser le seul&
.Voici une illustration de la différence:
Si cela semble bizarre par rapport à d'autres paradigmes de programmation, n'oubliez pas que la recherche doit fournir un vectorisées forme de l'opérateur.
Dans R, vous voulez vraiment le
&
opérateur plutôt que de&&
pour faire des paires ET de fonctionnement, les&&
un bit à bit ET. La même règle s'applique pour OU: si vous voulez faire un OU logique plutôt que d'un bit à bit OU, vous voulez le|
de l'opérateur.&
de l'opérateur.&
est de l'or au niveau du bit et de l'opérateur, pas de logique, et. Est-ce ce que vous vouliez utiliser?"