Interpretatie van fouten in r: 'max' niet significant voor factoren


Op een gegeven moment kunt u de volgende fout tegenkomen in R:

 'max' not meaningful for factors

Dit geeft eenvoudigweg aan dat u de „max“ probeert te nemen van een variabele die tot de klassefactor behoort.

Deze fout wordt bijvoorbeeld gegenereerd als we het maximum van de volgende vector proberen te nemen:

 #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

Per definitie zijn de waarden van een factorvector van nominale klasse, wat betekent dat er geen zinvolle volgorde van de waarden bestaat. Er is dus geen “max” waarde te vinden.

Een eenvoudige oplossing om het maximum van een factorvector te vinden, is door deze eenvoudigweg om te zetten in een karaktervector en vervolgens in een getalvector:

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

#[1] 15

Als uw factorvector alleen maar de factornamen bevat, is het niet mogelijk om de maximale waarde te vinden, zelfs niet na het converteren van de factorvector naar een numerieke vector, omdat het geen zin heeft om de „max“ van een lijst met factoren te vinden. namen.

 #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

Opgemerkt moet worden dat R zonder problemen de maximale aantalvectoren, datumvectoren en karaktervectoren kan vinden:

 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"

Dus als u de maximale waarde in een vector probeert te vinden, zorg er dan voor dat uw vector niet van het type factor is.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert