Interpretação de erros em r: 'max' não significativo para fatores


Em um ponto ou outro, você pode encontrar o seguinte erro no R:

 'max' not meaningful for factors

Isso simplesmente indica que você está tentando obter o “máximo” de uma variável que pertence à classe factor .

Por exemplo, este erro é gerado se tentarmos obter o máximo do seguinte vetor:

 #create a vector of class vector
factor_vector <- as.factor(c(1, 7, 12, 14, 15))

#attempt to find max value in the vector
max(factor_vector)

#Error in Summary.factor(1:5, na.rm = FALSE): 
# 'max' not meaningful for factors

Por definição, os valores de um vetor de fatores são de classe nominal, o que significa que não existe uma ordem significativa dos valores. Portanto, não há valor “máximo” a ser encontrado.

Uma solução simples para encontrar o máximo de um vetor de fator é simplesmente convertê-lo em um vetor de caracteres e depois em um vetor numérico:

 #convert factor vector to numeric vector and find the max value
new_vector <- as.numeric(as.character(factor_vector))
max(new_vector)

#[1] 15

Se o seu vetor de fatores contém simplesmente os nomes dos fatores, então não é possível encontrar o valor máximo, mesmo depois de converter o vetor de fatores em um vetor numérico, porque não faz sentido encontrar o “máximo” de uma lista de fatores. nomes.

 #create factor vector with names of factors
factor_vector <- as.factor(c("first", "second", "third"))

#attempt to convert factor vector into numeric vector and find max value
new_vector <- as.numeric(as.character(factor_vector))
max(new_vector)

#Warning message:
#NAs introduced by coercion 
#[1] NA

Deve-se notar que R pode encontrar os vetores de número máximo, vetores de data e vetores de caracteres sem encontrar problemas:

 numeric_vector <- c(1, 2, 12, 14)
max(numeric_vector)

#[1] 14

character_vector <- c("a", "b", "f")
max(character_vector)

#[1] “f”

date_vector <- as.Date(c("2019-01-01", "2019-03-05", "2019-03-04"))
max(date_vector)

#[1] "2019-03-05"

Portanto, se você estiver tentando encontrar o valor máximo em um vetor, certifique-se de que seu vetor não seja do tipo factor .

Add a Comment

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