Condition if

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Montana ROQUILLET
Messages : 22
Enregistré le : 24 Juil 2017, 06:39

Condition if

Messagepar Montana ROQUILLET » 14 Jan 2019, 10:15

Bonjour à tous,

J'ai une table avec plusieurs variables : id_magasin, latitude1, longitude1, latitude2, longitude2, écart2
Je souhaiterais appliquer un score 1 à chaque magasin si latitude1 est compris entre latitude2 - écart2 et latitude2 + écart2 et longitude1 est compris entre longitude2 - écart2 et longitude2 + écart2, sinon le score = 0.

Mon code est le suivant :
if ((table$latitude2 - table$écart2) <= table$latitude1 && table$latitude1 <= (table$latitude2 + table$écart2) && (table$longitude2 - table$écart2) <= table$longitude1 && table$longitude1 <= (table$longitude2 + table$écart2)){
table$score <- 1
} else {
table$score <- 0
}

En soit R n'affiche pas d'erreur sur mon code, j'ai bien une colonne score qui est créée, mais je n'ai que des 1, même en inventant des valeurs aberrantes où il devrait y avoir un 0.

Avez vous une solution ?

Merci

Pierre-Yves Berrard
Messages : 650
Enregistré le : 12 Jan 2016, 23:30

Re: Condition if

Messagepar Pierre-Yves Berrard » 14 Jan 2019, 10:39

Bonjour,

L'erreur est due à l'utilisation de l'opérateur "&&" qui ne ne prend en compte que le premier élément de chaque vecteur.
Pour preuve :

Code : Tout sélectionner

c(TRUE, FALSE) & c(TRUE, TRUE)
# [1]  TRUE FALSE

c(TRUE, FALSE) && c(TRUE, TRUE)
# [1]  TRUE # (seuls les premiers termes de chaque vecteur ont été utilisés)

Il faudrait par conséquent utiliser "&".

Cela va faire planter "if" qui n'accepte qu'une valeur. La solution sera d'utiliser "ifelse" à la place.
PY

Montana ROQUILLET
Messages : 22
Enregistré le : 24 Juil 2017, 06:39

Re: Condition if

Messagepar Montana ROQUILLET » 14 Jan 2019, 13:20

Merci pour votre réponse.
Effectivement, j'ai essayé avec "&", et il m'affiche l'erreur suivante : "the condition has length > 1 and only the first element will be used".
Comment utiliser ifelse dans ce cas là ?

Merci

Montana ROQUILLET
Messages : 22
Enregistré le : 24 Juil 2017, 06:39

Re: Condition if

Messagepar Montana ROQUILLET » 14 Jan 2019, 14:06

J'ai réussi merci beaucoup !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Bing [Bot] et 1 invité