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.