it-swarm.com.de

Ändern Sie die Einstellungen von stringsAsFactors für data.frame

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?

27
VincentH

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.

38
MvG