J'ai créé un vecteur avec des valeurs logiques vrai et faux, et je veux utiliser une boucle for pour identifier tous ceux avec la valeur "TRUE". "Master", "master" et "MSc" sont tous 1:45 vecteurs, je veux utiliser plusieurs "ou" des conditions pour définir que pour toutes les valeurs "VRAI", un nouveau vecteur sera créé en prenant le "0". valeur de "master":Pour boucle avec plusieurs conditions dans r retournant les mêmes valeurs
n <- nrow(fs)
for (i in 1:n) {
if(Master[i]=="TRUE"||master[i]=="TRUE"||MSc[i]=="TRUE"){
fs$data.linkedin_education_degree1[i] <- "Master"
}
}
Alors que "maître", "maître" et "MSC" ressemblent:
> Master
[1] TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE
[24] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE
> master
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[24] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
> MSc
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[24] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
Après avoir exécuté cette boucle, je suppose que je recevrais quelques "maître" et "NA", mais en réalité toutes les valeurs retournées sont "Master" ?!
> fs$data.linkedin_education_degree1
[1] "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master"
[16] "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master"
[31] "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master" "Master"
Je n'arrive pas à trouver ce qui ne va pas dans la boucle. Quelqu'un peut-il offrir de l'aide? Merci beaucoup!
modifier par Paul Hiemstra:
Le code exemple suivant ne reproduit pas votre problème. Pouvez-vous la question reproductible, soit en reproduisant le problème en utilisant mon code exemple ou en fournissant les données de votre code ci-dessus:
m1 = c(TRUE, TRUE, FALSE)
m2 = c(TRUE, FALSE, FALSE)
m3 = c(TRUE, TRUE, FALSE)
result = rep(NA, 3)
n <- length(m1)
for (i in 1:n) {
if (m1[i] == 'TRUE' || m2[i] == 'TRUE') {
result[i] = 'Master'
}
}
# > result
# [1] "Master" "Master" NA
il n'y a absolument aucune raison d'utiliser une boucle ici. – Roland
Placez-les dans une 'liste' et utilisez' Reduce', c'est-à-dire 'c (NA," Master ") [Reduce ('|', liste (Master, master, MSc)) + 1]'. De plus, si vous avez un vecteur logique, vous n'avez pas besoin de '==" TRUE "' – akrun
Quelle est la valeur de 'fs $ data.linkedin_education_degree1' quand la condition' Master [i] == "TRUE" || master [i] == "VRAI" || MSc [i] == "VRAI" 'n'est pas atteint? – Hugo