Ich bevorzuge es im Allgemeinen, R zu codieren, damit ich keine Warnungen erhalte, aber ich weiß nicht, wie ich vermeiden kann, eine Warnung zu erhalten, wenn ich as.numeric
einen Zeichenvektor konvertiere.
Beispielsweise:
x <- as.numeric(c("1", "2", "X"))
Ich werde gewarnt, weil es NAs durch Zwang eingeführt hat. Ich möchte, dass NAs durch Zwang eingeführt werden - gibt es eine Möglichkeit, es zu sagen "Ja, das ist, was ich tun möchte". Oder soll ich nur mit der Warnung leben?
Oder sollte ich für diese Aufgabe eine andere Funktion verwenden?
?suppressWarnings
vielleicht?suppressWarnings
scheint perfekt zu sein.read.table
ein Argument akzeptiertna.strings
?Antworten:
Verwendung
suppressWarnings()
:Dies unterdrückt Warnungen.
quelle
suppressWarnings()
wurde bereits erwähnt. Eine Alternative besteht darin, die problematischen Zeichen zuerst manuell in NA zu konvertieren.taRifx::destring
Tut genau das für Ihr spezielles Problem . Auf diese Weise wird Ihre Funktion nicht unterdrückt, wenn Sie eine andere, unerwartete Warnung erhalten.quelle
destring
perfekt für das Beispiel von op funktioniert, aber eine Einschränkung für jeden, der diesen Thread in Zukunft sieht, ist, dass erdestring
anders funktioniert,as.numeric
als wenn die Zielzeichenfolge eine Mischung aus Zeichenfolge und numerisch ist: das heißt,destring("x1")
gibt1
aberas.numeric("x1")
gibtNA
Im Allgemeinen ist das Unterdrücken von Warnungen nicht die beste Lösung, da Sie möglicherweise gewarnt werden möchten, wenn unerwartete Eingaben bereitgestellt werden.
Die folgende Lösung ist ein Wrapper, mit dem nur NA während der Datentypkonvertierung beibehalten werden kann. Benötigt kein Paket.
quelle
suppressWarnings()
ist im Allgemeinen eine schlechte Idee, da wir diese Warnungen manchmal sehen müssen.Ich habe die Jangorecki- Funktion für den Fall, dass wir möglicherweise eine Vielzahl von Werten haben, die nicht in eine Zahl konvertiert werden können, leicht geändert . In meiner Funktion wird eine Vorlagensuche durchgeführt und wenn die Vorlage nicht gefunden wird, wird FALSE zurückgegeben.! vor gperl bedeutet dies, dass wir die Vektorelemente benötigen, die nicht mit der Vorlage übereinstimmen. Der Rest ähnelt der
as.num
Funktion. Beispiel:quelle