Generalmente prefiero codificar R para no recibir advertencias, pero no sé cómo evitar recibir una advertencia cuando uso as.numeric
para convertir un vector de caracteres.
Por ejemplo:
x <- as.numeric(c("1", "2", "X"))
Me dará una advertencia porque introdujo NA por coerción. Quiero NA introducidas por coerción: ¿hay alguna manera de decirle "sí, esto es lo que quiero hacer". ¿O debería vivir con la advertencia?
¿O debería estar usando una función diferente para esta tarea?
?suppressWarnings
tal vez?suppressWarnings
Parece perfectoread.table
acepta una discusiónna.strings
?Respuestas:
Uso
suppressWarnings()
:Esto suprime las advertencias.
fuente
suppressWarnings()
Ya ha sido mencionado. Una alternativa es convertir manualmente los caracteres problemáticos a NA primero. Para su problema particular,taRifx::destring
hace exactamente eso. De esta manera, si obtiene alguna otra advertencia inesperada de su función, no se suprimirá.fuente
destring
funciona perfectamente para el ejemplo de op, pero una advertencia para cualquiera que vea este hilo en el futuro es quedestring
funciona de manera diferente aas.numeric
cuando la cadena objetivo es una mezcla de cadena y numérica: es decir,destring("x1")
da1
peroas.numeric("x1")
daNA
En general, la supresión de advertencias no es la mejor solución, ya que es posible que desee recibir una advertencia cuando se proporcione alguna entrada inesperada.
La solución a continuación es un contenedor para mantener solo NA durante la conversión del tipo de datos. No requiere ningún paquete.
fuente
suppressWarnings()
es generalmente una mala idea, porque a veces necesitamos ver esas advertencias.He modificado ligeramente la función jangorecki para el caso en el que podemos tener una variedad de valores que no se pueden convertir a un número. En mi función, se realiza una búsqueda de plantilla y, si no se encuentra la plantilla, se devuelve FALSE. antes de gperl, significa que necesitamos esos elementos vectoriales que no coinciden con la plantilla. El resto es similar a la
as.num
función. Ejemplo:fuente