Возможно, вам будет проще увидеть проблему, если вы добавите больше пробела к коду.
ChildPABase19_test$Predilection_1 <- ifelse(
ChildPABase19_test$Predilection_1 == 1,
0.6,
ifelse(
ChildPABase19_test$Predilection_1 == 2,
1.2,
ifelse(
ChildPABase19_test$Predilection_1 == 3,
2.5,
ifelse(
ChildPABase19_test$Predilection_1 == 4,
1.8
)
)
Из этого вы можете увидеть две вещи: финал ifelse()
имеет только два аргумента, а не три, и отсутствуют две закрывающие скобки.Первое, что вызывает сообщение об ошибке: отсутствующим третьим аргументом является аргумент «нет», на который жалуется R, отсутствует.Вам следует установить для этого аргумента любое значение, которое вы хотите, чтобы значение Predilection_1
было, если исходное значение не равно 1, 2, 3 или 4. Если у вас нет значения, вы, вероятно, должны установить его наNA
.
Вы также должны добавить две пропущенные закрывающие скобки, иначе код не запустится.
Сложность чтения вложенных функций ifelse()
является одной из причин, по которой В пакет dplyr
входит функция case_when()
.Вы можете использовать это для создания гораздо более короткого кода:
ChildPABase19_test <- mutate(ChildPABase19_test, Predilection_1 = case_when(
Predilection_1 == 1 ~ 0.6,
Predilection_1 == 2 ~ 1.2,
Predilection_1 == 3 ~ 2.5,
Predilection_1 == 4 ~ 1.8,
TRUE ~ NA_real_
))
Примеры в документации для case_when()
довольно неплохо объясняют синтаксис, если вам нужна дополнительная помощь.