заменить значения строк условно на is.na в другом столбце

Простая логическая задача замены; У меня есть датафрейм, как:

mydf <- expand.grid(var1 = c('type1', 'type2'), var2 = c(7, 6, "NA"), var3 = 9)

Я хотел бы заменить значения в var3 значениями в var2, если var2 не является NA. Таким образом, полученный новый var3 должен быть 7,7,6,6, NA, NA. Пытаясь добраться до этого, я замечаю, что

mydf$var3[mydf$var2 == 7] <- 5

правильно определяет строки 1 и 2 файла mydf как нуждающиеся в замене и оставляет последние четыре строки в покое, поэтому я получаю var3 = 5,5,9,9,9,9. Однако если я попытаюсь

    mydf$var3[!is.na(mydf$var2)] <- 5

Я получаю var3 = 5,5,5,5,5,5. Так почему же он не пропустил последние две строки, где var2 был NA? Следующая проблема заключается в том, что не знаю, как получить заменяющие значения, равные var2 вместо константы. Когда я пытаюсь

mydf$var3[!is.na(mydf$var2)] <- mydf$var2

Я получаю var3 = 1,1,2,2,3,3. Что я вообще не понимаю.

Ответы на вопрос(1)

Ваш ответ на вопрос