Ich habe eine Funktion, in der ich einen data.frame
Definiere, mit dem ich Schleifen zum Füllen mit Daten verwende. Irgendwann erhalte ich die Warnmeldung:
Warnmeldungen: 1: In
[<-.factor
(*tmp*
, Iseq, value = "CHANGE"): Ungültige Faktorstufe, erzeugte NAs
Wenn ich also mein data.frame definiere, möchte ich die Option stringsAsFactors
auf FALSE
setzen, aber ich verstehe nicht, wie das geht.
Ich habe versucht:
DataFrame = data.frame(stringsAsFactors=FALSE)
und auch:
options(stringsAsFactors=FALSE)
Wie wird die Option stringsAsFactors richtig festgelegt?
Es hängt davon ab, wie Sie Ihren Datenrahmen füllen, für den Sie keinen Code angegeben haben. Wenn Sie einen neuen Datenrahmen erstellen, können Sie dies folgendermaßen tun:
x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)
In diesem Fall ist if z. aVector
ist ein Zeichenvektor, dann ist die Datenrahmenspalte x$aName
auch ein Zeichenvektor und kein Faktorvektor. Wenn Sie dies mit einem vorhandenen Datenrahmen kombinieren (mit rbind
, cbind
oder ähnlichem), sollte dieser Modus beibehalten werden.
Wenn Sie ausführen
options(stringsAsFactors = FALSE)
sie ändern die globale Standardeinstellung. Daher wird jeder Datenrahmen, den Sie nach Ausführung dieser Zeile erstellen, nur dann automatisch in Faktoren konvertiert, wenn Sie ausdrücklich dazu aufgefordert werden. Wenn Sie nur die Konvertierung an einem einzigen Ort vermeiden müssen, würde ich die Standardeinstellung lieber nicht ändern. Wenn dies jedoch viele Stellen in Ihrem Code betrifft, ist es eine gute Idee, die Standardeinstellung zu ändern.
Eine weitere Sache: Wenn Ihr Vektor bereits Faktoren enthält, wird keiner der oben genannten Faktoren ihn wieder in einen Zeichenvektor umwandeln. Dazu sollten Sie es explizit mit as.character
Oder ähnlichem zurückkonvertieren.