Interprétation des erreurs dans R : ‘max’ pas significatif pour les facteurs



À un moment ou à un autre, vous pouvez rencontrer l’erreur suivante dans R :

'max' not meaningful for factors

Cela indique simplement que vous essayez de prendre le « max » d’une variable qui appartient au facteur de classe.

Par exemple, cette erreur est générée si nous essayons de prendre le maximum du vecteur suivant :

#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

Par définition, les valeurs d’un vecteur de facteurs sont de classe nominale, ce qui signifie qu’il n’y a pas d’ordre significatif des valeurs. Il n’y a donc aucune valeur « max » à trouver.

Une solution simple pour trouver le maximum d’un vecteur de facteurs consiste simplement à le convertir en vecteur de caractères, puis en vecteur numérique :

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

#[1] 15

Si votre vecteur de facteurs contient simplement les noms de facteurs, alors il n’est pas possible de trouver la valeur maximale, même après avoir converti le vecteur de facteurs en vecteur numérique, car cela ne sert à rien de trouver le « max » d’une liste de facteurs. des noms.

#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

Il convient de noter que R peut trouver le maximum de vecteurs numériques, de vecteurs de date et de vecteurs de caractères sans rencontrer de problèmes :

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"

Ainsi, si vous essayez de trouver la valeur maximale dans un vecteur, assurez-vous simplement que votre vecteur n’est pas du type factor .

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *