Como corrigir o erro de argumento não numérico para operador binário no R
O argumento não numérico para o erro do operador binário no R ocorre quando você tenta fazer aritmética em dados não numéricos, como uma cadeia de caracteres ou um fator.
Você pode ter encontrado esse erro ao programar no R: Error: non-numeric argument to binary operator. Isso pode ocorrer quando você executa uma operação matemática em dados que contêm valores não numéricos, como cadeias de caracteres ou caracteres.
Neste tutorial, orientarei você sobre como lidar com esse erro e corrigi-lo. Primeiro, darei uma resposta curta e, em seguida, me aprofundarei para que você possa entender melhor por que esse erro ocorre.
A resposta curta: Como corrigir o erro de argumento não numérico para operador binário no R
Para quem tem pressa, a correção do erro de argumento não numérico para operador binário no R envolve a conversão de dados para tipos numéricos antes de realizar operações aritméticas. Esse método garante que todos os elementos em seus dados sejam adequados para cálculos matemáticos.
No exemplo a seguir, a função as.numeric() converte diretamente o vetor characters em numérico, garantindo que a operação de adição seja realizada sem erros.
No R, as operações aritméticas são projetadas para trabalhar com tipos de dados numéricos. Quando você encontra o argumento não numérico para o erro de operador binário, isso normalmente indica o uso indevido de operadores aritméticos com tipos de dados não numéricos, como cadeias de caracteres ou fatores. Para saber mais sobre os tipos de dados do R, leia nosso tutorial Tipos de dados no R.
Isso pode ocorrer em vários cenários comuns:
Operações em cadeias de caracteres: O erro pode ocorrer ao tentar executar aritmética em dados de texto.
Operações em tipos de dados de fator: O erro ocorre quando o R converte cadeias de caracteres em fatores dentro de quadros de dados, especialmente ao importar dados, levando a tipos não numéricos não intencionais.
Operações em listas ou outras estruturas complexas: O erro também ocorre quando você usa operadores aritméticos em listas ou estruturas semelhantes inadequadas para essas operações.
Como reproduzir e corrigir o erro
Vamos criar um conjunto de dados simples e executar operações que acionem intencionalmente esse erro para ilustrar como ele pode ocorrer. Em seguida, corrigiremos o erro em cada caso.
Como reproduzir e corrigir o erro para cadeias de caracteres
Em nosso primeiro exemplo, vemos essa mensagem de erro porque os elementos do vetor characters não são do tipo numérico, mas sim cadeias de caracteres.
characters <- c("5","10","15")
result <- characters +10
print(result)Tecnologia
Para corrigir isso, convertemos para numérico usando as.numeric():
Em nosso próximo exemplo, reproduziremos o erro para os fatores.
factors <- factor(c("5","10","15"))
result <- factors +10
print(result)Tecnologia
Para corrigir isso, convertemos para numérico primeiro convertendo para caractere. Fazemos isso porque, no R, os fatores são armazenados como vetores inteiros com um conjunto correspondente de níveis de caracteres.
Quando você converte um fator diretamente em numérico usando as.numeric(), o R retorna os códigos inteiros subjacentes, que são a representação interna de números inteiros dos níveis do fator, em vez dos valores reais dos caracteres. A conversão do fator em um caractere primeiro recupera os níveis reais como cadeias de caracteres, que podem então ser corretamente convertidos em valores numéricos.
Como reproduzir e corrigir o erro para tipos de dados mistos
O próximo exemplo é um pouco mais complicado. Nenhuma de nossas técnicas anteriores funcionaria nesse caso, pois encontraríamos "20a" que não pode ser convertido em um valor numérico.
A função sapply() oferece uma boa solução para esse caso. Ele aplica uma função especificada a cada elemento do nosso vetor. No nosso caso, definimos uma função que tenta converter cada elemento em um valor numérico.
Quando ocorre um erro, o site traceback() pode ser uma ferramenta valiosa para a depuração. Ele fornece uma sequência de chamadas que levaram ao erro, ajudando você a identificar o ponto exato da falha.
Depois de executar esse comando, o R imprimirá a sequência de chamadas de função que levaram ao erro. Isso pode fornecer informações sobre onde os dados não numéricos podem ter sido introduzidos.
Revisar os métodos de entrada de dados
Talvez você também queira verificar novamente como os dados são importados e garantir que sejam convertidos corretamente. Ao importar dados, especialmente de arquivos CSV, o R pode converter automaticamente dados de caracteres em fatores. É importante controlar esse comportamento para garantir que seus dados sejam importados corretamente.
# Assuming data is read from a CSV incorrectly imported as factors
data <- read.csv("data.csv", stringsAsFactors =TRUE)
data$column <- as.numeric(as.character(data$column))Tecnologia
Neste exemplo, os dados são importados de um arquivo CSV com stringsAsFactors definido como TRUE. Em seguida, convertemos a coluna de fator em um caractere e, posteriormente, em numérico para garantir o tipo de dados adequado para operações aritméticas.
Como evitar o erro
Uso de verificações condicionais
Para ajudar a evitar a ocorrência desse erro, tente implementar verificações condicionais para garantir que os tipos de dados sejam adequados para as operações. Verificar o tipo de dados e tratar as conversões necessárias condicionalmente é uma boa prática antes de executar as operações.
No exemplo a seguir, verificamos se os dados são numéricos. Caso contrário, nós o convertemos em numérico antes de prosseguir com a operação aritmética. Isso captura todos os tipos de dados errados e os converte adequadamente em numéricos.
data <-"20"if(is.numeric(data)){
result <- data +10}else{
data <- as.numeric(data)
result <- data +10}
print(result)Tecnologia
Conclusão e recursos adicionais
Espero que este artigo tenha sido útil para resolver seu problema. Erros como o argumento não numérico para o erro do operador binário são comuns na programação, e saber como lidar com eles é importante. Entender os tipos de dados e as conversões adequadas pode ajudar a evitar a ocorrência desse erro.
Descubra as complexidades dos modelos não lineares em comparação com os modelos lineares. Saiba mais sobre suas aplicações, limitações e como ajustá-las usando conjuntos de dados do mundo real.
Você pode ter encontrado esse erro ao programar no R:
Error: non-numeric argument to binary operator. Isso pode ocorrer quando você executa uma operação matemática em dados que contêm valores não numéricos, como cadeias de caracteres ou caracteres.Neste tutorial, orientarei você sobre como lidar com esse erro e corrigi-lo. Primeiro, darei uma resposta curta e, em seguida, me aprofundarei para que você possa entender melhor por que esse erro ocorre.
A resposta curta: Como corrigir o erro de argumento não numérico para operador binário no R
Para quem tem pressa, a correção do erro de argumento não numérico para operador binário no R envolve a conversão de dados para tipos numéricos antes de realizar operações aritméticas. Esse método garante que todos os elementos em seus dados sejam adequados para cálculos matemáticos.
No exemplo a seguir, a função
as.numeric()converte diretamente o vetorcharactersem numérico, garantindo que a operação de adição seja realizada sem erros.Por que o erro ocorre
No R, as operações aritméticas são projetadas para trabalhar com tipos de dados numéricos. Quando você encontra o argumento não numérico para o erro de operador binário, isso normalmente indica o uso indevido de operadores aritméticos com tipos de dados não numéricos, como cadeias de caracteres ou fatores. Para saber mais sobre os tipos de dados do R, leia nosso tutorial Tipos de dados no R.
Isso pode ocorrer em vários cenários comuns:
Como reproduzir e corrigir o erro
Vamos criar um conjunto de dados simples e executar operações que acionem intencionalmente esse erro para ilustrar como ele pode ocorrer. Em seguida, corrigiremos o erro em cada caso.
Como reproduzir e corrigir o erro para cadeias de caracteres
Em nosso primeiro exemplo, vemos essa mensagem de erro porque os elementos do vetor
charactersnão são do tipo numérico, mas sim cadeias de caracteres.Para corrigir isso, convertemos para numérico usando
as.numeric():Como reproduzir e corrigir o erro por fatores
Em nosso próximo exemplo, reproduziremos o erro para os fatores.
Para corrigir isso, convertemos para numérico primeiro convertendo para caractere. Fazemos isso porque, no R, os fatores são armazenados como vetores inteiros com um conjunto correspondente de níveis de caracteres.
Quando você converte um fator diretamente em numérico usando
as.numeric(), o R retorna os códigos inteiros subjacentes, que são a representação interna de números inteiros dos níveis do fator, em vez dos valores reais dos caracteres. A conversão do fator em um caractere primeiro recupera os níveis reais como cadeias de caracteres, que podem então ser corretamente convertidos em valores numéricos.Como reproduzir e corrigir o erro nas listas
Em nosso próximo exemplo, reproduziremos o erro para listas.
Para corrigir isso, extraímos e convertemos os elementos em numéricos. A função
unlist()converte a lista em um vetor.Como reproduzir e corrigir o erro para tipos de dados mistos
O próximo exemplo é um pouco mais complicado. Nenhuma de nossas técnicas anteriores funcionaria nesse caso, pois encontraríamos
"20a"que não pode ser convertido em um valor numérico.A função
sapply()oferece uma boa solução para esse caso. Ele aplica uma função especificada a cada elemento do nosso vetor. No nosso caso, definimos uma função que tenta converter cada elemento em um valor numérico.Para obter mais informações sobre programação funcional em R, confira nosso curso Programação funcional intermediária com Rurr. Para saber mais sobre a família de funções
apply(), leia nosso Tutorial sobre a família R Apply.Coisas adicionais que você deve saber
Depuração com traceback
Quando ocorre um erro, o site
traceback()pode ser uma ferramenta valiosa para a depuração. Ele fornece uma sequência de chamadas que levaram ao erro, ajudando você a identificar o ponto exato da falha.Depois de executar esse comando, o R imprimirá a sequência de chamadas de função que levaram ao erro. Isso pode fornecer informações sobre onde os dados não numéricos podem ter sido introduzidos.
Revisar os métodos de entrada de dados
Talvez você também queira verificar novamente como os dados são importados e garantir que sejam convertidos corretamente. Ao importar dados, especialmente de arquivos CSV, o R pode converter automaticamente dados de caracteres em fatores. É importante controlar esse comportamento para garantir que seus dados sejam importados corretamente.
Neste exemplo, os dados são importados de um arquivo CSV com
stringsAsFactorsdefinido comoTRUE. Em seguida, convertemos a coluna de fator em um caractere e, posteriormente, em numérico para garantir o tipo de dados adequado para operações aritméticas.Como evitar o erro
Uso de verificações condicionais
Para ajudar a evitar a ocorrência desse erro, tente implementar verificações condicionais para garantir que os tipos de dados sejam adequados para as operações. Verificar o tipo de dados e tratar as conversões necessárias condicionalmente é uma boa prática antes de executar as operações.
No exemplo a seguir, verificamos se os dados são numéricos. Caso contrário, nós o convertemos em numérico antes de prosseguir com a operação aritmética. Isso captura todos os tipos de dados errados e os converte adequadamente em numéricos.
Conclusão e recursos adicionais
Espero que este artigo tenha sido útil para resolver seu problema. Erros como o argumento não numérico para o erro do operador binário são comuns na programação, e saber como lidar com eles é importante. Entender os tipos de dados e as conversões adequadas pode ajudar a evitar a ocorrência desse erro.
Para ajudá-lo com o R, você pode consultar nossas folhas de consulta do R ou nosso curso gratuito de Introdução ao R ou, para obter uma compreensão mais profunda, experimente nosso programa R Programming Skill Track.