Generalmente prefiero codificar R para no recibir advertencias, pero no sé cómo evitar recibir una advertencia cuando uso as.numericpara 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?

?suppressWarningstal vez?suppressWarningsParece perfectoread.tableacepta 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::destringhace exactamente eso. De esta manera, si obtiene alguna otra advertencia inesperada de su función, no se suprimirá.fuente
destringfunciona perfectamente para el ejemplo de op, pero una advertencia para cualquiera que vea este hilo en el futuro es quedestringfunciona de manera diferente aas.numericcuando la cadena objetivo es una mezcla de cadena y numérica: es decir,destring("x1")da1peroas.numeric("x1")daNAEn 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.numfunción. Ejemplo:fuente