Como corrigir: erro em strsplit(unitspec, ”“): argumento sem caractere


Um erro que você pode encontrar no R é:

 Error in strsplit(df$my_column, split = "1"): non-character argument 

Este erro geralmente ocorre quando você tenta usar a função strsplit() em R para dividir uma string, quando o objeto com o qual você está trabalhando não é uma string.

Este tutorial explica exatamente como corrigir esse erro.

Como reproduzir o erro

Suponha que temos o seguinte quadro de dados em R:

 #create data frame
df <- data. frame (team=c('A', 'B', 'C'),
                 dots=c(91910, 14015, 120215))

#view data frame
df

  team points
1 A 91910
2 B 14015
3 C 120215

Agora suponha que tentamos usar a função strsplit() para dividir os valores na coluna “pontos” com base em onde o número 1 aparece:

 #attempt to split values in points column
strsplit(df$points, split="1")

Error in strsplit(df$points, split = "1"): non-character argument

Recebemos um erro porque a variável “pontos” não é um caractere.

Podemos confirmar isso verificando a classe desta variável:

 #display class of "points" variable
class(df$points)

[1] "digital"

Podemos ver que esta variável possui uma classe numérica.

Como corrigir o erro

A maneira de corrigir esse erro é usar as.character() para converter a variável “pontos” em um caractere antes de tentar usar a função strsplit() :

 #split values in points column based on where 1 appears
strsplit(as. character (df$points), split="1")

[[1]]
[1990"

[[2]]
[1] "" "40" "5" 

[[3]]
[1] "" "202" "5"

Desta vez, dividimos com sucesso cada valor na coluna “pontos” porque primeiro usamos a função as.character() para converter os “pontos” em um caractere.

Recursos adicionais

Os tutoriais a seguir explicam como resolver outros erros comuns em R:

Como corrigir em R: os nomes não correspondem aos nomes anteriores
Como corrigir em R: mais colunas do que nomes de colunas
Como reparar em R: a substituição tem X linhas, os dados têm Y

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *