substituir valores de linha condicionais em is.na em outra coluna

Problema de substituição lógica simples; Eu tenho um quadro de dados como:

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

Gostaria de substituir os valores em var3 pelos valores em var2, a menos que var2 seja NA. Portanto, a nova var3 resultante deve ser 7,7,6,6, NA, NA. Ao tentar chegar a isso, percebo que

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

identifica corretamente as linhas 1 e 2 do mydf como necessitando de substituição e deixa as últimas quatro linhas em paz, então obtenho var3 = 5,5,9,9,9,9. No entanto, se eu tentar

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

Recebo var3 = 5,5,5,5,5,5. Então, por que não pulou as duas últimas linhas, onde var2 era NA? O próximo problema é que não sabemos como obter os valores de substituição como var2 em vez de uma constante. Quando eu tento

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

Recebo var3 = 1,1,2,2,3,3. O que eu não entendo nada.