Zeilenwerte, die von is.na abhängig sind, in einer anderen Spalte ersetzen

Simple logisches Ersetzungsproblem; Ich habe einen Datenrahmen wie:

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

Ich möchte die Werte in var3 durch die Werte in var2 ersetzen, es sei denn, var2 ist NA. Das resultierende neue var3 sollte also 7,7,6,6, NA, NA sein. Wenn ich versuche, darauf zu kommen, bemerke ich, dass

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

identifiziert die Zeilen 1 und 2 von mydf korrekt als zu ersetzend und lässt die letzten vier Zeilen alleine, so dass ich var3 = 5,5,9,9,9,9 erhalte. Allerdings, wenn ich versuche,

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

Ich erhalte var3 = 5,5,5,5,5,5. Warum hat es die letzten beiden Zeilen nicht übersprungen, in denen var2 NA war? Das nächste Problem ist, dass Sie nicht wissen, wie Sie die Ersatzwerte auf var2 anstatt auf eine Konstante setzen können. Wenn ich es versuche

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

Ich erhalte var3 = 1,1,2,2,3,3. Was ich überhaupt nicht verstehe.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage