Ich habe einen Datenrahmen mit zwei Spalten, die erste enthält Zahlen, die zweite Zeichenketten. Mein Problem ist: Sobald ich eine Zeichenfolge in der zweiten Spalte durch eine andere Zeichenfolge ersetzen, wird die erste Spalte von class
numerisch in Zeichen umgewandelt. Hier ein Beispiel:Numerische Spalte wird zur Zeichenspalte gezwungen, wenn eine andere Zeichenspalte geändert wird
df <- data.frame(num = c(1,2), char = c("a", "b"), stringsAsFactors = F)
class(df$num) # "numeric"
class(df$char) # "character"
df[df$char == "a", ] <- "c"
class(df$char) # "character"
class(df$num) # "character" !!
Was ist der Grund für dieses Verhalten und wie man es stoppt?
Nichts ist falsch mit Ihrer Antwort. Eine andere Option ist 'df [df [[" char "]] ==" a "," char "] <-" c "'. Es ist gut, beides zu wissen, weil das in Ihrer Antwort ein wenig einfacher zu tippen ist, aber das in meinem Kommentar wird mit Variablen arbeiten. '$' funktioniert nicht mit Variablen, zB wenn Sie 'my_col <-" char "' haben, dann funktioniert 'df [df [[my_col]] ==" a ", my_col] <-" c "' . – Gregor