Geralmente, prefiro codificar R para não receber avisos, mas não sei como evitar um aviso as.numeric
ao converter um vetor de caractere.
Por exemplo:
x <- as.numeric(c("1", "2", "X"))
Me dará um aviso porque introduziu NAs por coerção. Eu quero NAs introduzidas por coerção - existe uma maneira de dizer "sim, é isso que eu quero fazer". Ou devo apenas viver com o aviso?
Ou devo usar uma função diferente para esta tarefa?
?suppressWarnings
talvez?suppressWarnings
parece perfeito.read.table
aceita um argumentona.strings
?Respostas:
Use
suppressWarnings()
:Isso suprime avisos.
fonte
suppressWarnings()
já foi mencionado. Uma alternativa é converter manualmente os caracteres problemáticos para NA primeiro. Para o seu problema específico,taRifx::destring
faz exatamente isso. Dessa forma, se você receber outro aviso inesperado de sua função, ele não será suprimido.fonte
destring
funciona perfeitamente para o exemplo do op, mas uma ressalva para quem vê esse thread no futuro é quedestring
funciona de maneira diferente deas.numeric
quando a string de destino é uma mistura de string e numérica: ou seja,destring("x1")
dá1
masas.numeric("x1")
dáNA
Em geral, suprimir avisos não é a melhor solução, pois você pode ser avisado quando alguma entrada inesperada for fornecida.
A solução abaixo é um invólucro para manter apenas NA durante a conversão do tipo de dados. Não requer nenhum pacote.
fonte
suppressWarnings()
geralmente é uma má ideia, porque às vezes precisamos ver esses avisos.Modifiquei levemente a função jangorecki para o caso em que podemos ter uma variedade de valores que não podem ser convertidos em um número. Na minha função, uma pesquisa de modelo é realizada e, se o modelo não for encontrado, FALSE será retornado.! antes do gperl, significa que precisamos desses elementos vetoriais que não correspondem ao modelo. O resto é semelhante à
as.num
função. Exemplo:fonte