Я создал вектор с логическими значениями true и false, и я хочу использовать цикл for для идентификации всех значений с «TRUE».Для цикла с несколькими условиями в r, возвращающих одинаковые значения
«Master», «master» и «MSc» - все векторы 1:45, я хочу использовать несколько «или» условий для определения того, что для всех значений «ИСТИНА» будет создан новый вектор, значение «Мастер»:
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"
}
}
в то время как «Мастер», «Мастер» и «магистр» выглядит следующим образом:
> 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
После выполнения этого цикла, я предполагаю, что я хотел бы получить несколько «Мастер» и «NA», но на самом деле все возвращаемые значения «Мастер» ?!
> 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"
Я не могу найти что-то не так в цикле. Может ли кто-нибудь помочь? Большое спасибо!
редактировать Пол Hiemstra:
В следующем примере кода не воспроизводит проблему. Вы можете сделать вопрос воспроизводимым, либо путем воспроизведения проблемы, используя мой пример код или предоставления данных для кода выше:
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
Там нет абсолютно никаких причин, чтобы использовать цикл здесь. – Roland
Поместите их в 'list' и используйте' Reduce' i.e. 'c (NA,« Master ») [Уменьшить ('|', список (Мастер, мастер, MSc)) + 1]'. Кроме того, если у вас есть логический вектор, нет необходимости в '==" TRUE "' – akrun
Что такое значение 'fs $ data.linkedin_education_degree1', когда условие' Master [i] == "TRUE" || master [i] == "TRUE" || MSc [i] == "TRUE" 'не выполняется? – Hugo