Я пытаюсь изменить значение переменной в data.frame, где, если условие выполняется, переменная принимает другое значение, а если условие не выполняется, переменная принимает свое первоначальное значение.Я запутался, почему получаю сообщение об ошибке, и хотел бы узнать, как я могу изменить свой код, чтобы устранить эту ошибку.
Например, скажем, у меня есть следующий набор данных x
, и я хочу создатьновая переменная var3
, такая, что если условие выполняется, var3
принимает 1, если нет, var3
принимает старое значение.
x = data.frame(var1 = c('a', 'b', 'ab'),
var2 = rep(2,3))
x
x %>%
dplyr::mutate(var3 = 0,
var3 = if_else(grep('a', var1)==1, 1, var3))
Если я запускаю этот код, я получаю следующую ошибку
Error in mutate_impl(.data, dots) :
Column `var3` must be length 3 (the number of rows) or one, not 2
Правильный ответ
var1 var2 var3
1 a 2 1
2 b 2 0
3 ab 2 1
Мой реальный код более сложен, и мне нужноvar3
, чтобы принять его старое значение, когда условие оценивает FALSE
, а не просто единичное значение (скажем, 0
).
Что я здесь не так делаю?