Интерпретация ошибок в r: «макс» не имеет значения для факторов
В тот или иной момент вы можете столкнуться со следующей ошибкой в R:
'max' not meaningful for factors
Это просто означает, что вы пытаетесь взять «максимум» переменной, принадлежащей фактору класса.
Например, эта ошибка генерируется, если мы пытаемся взять максимум из следующего вектора:
#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
По определению значения вектора факторов относятся к номинальному классу, а это означает, что значимого порядка значений нет. Таким образом, невозможно найти «максимальное» значение.
Простое решение для нахождения максимума фактор-вектора — просто преобразовать его в вектор символов, а затем в числовой вектор:
#convert factor vector to numeric vector and find the max value
new_vector <- as.numeric(as.character(factor_vector))
max(new_vector)
#[1] 15
Если ваш вектор факторов просто содержит имена факторов, то невозможно найти максимальное значение даже после преобразования вектора факторов в числовой вектор, поскольку нет смысла находить «макс» списка факторов. имена.
#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
Следует отметить, что R может без проблем найти максимальные числовые векторы, векторы дат и векторы символов:
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"
Поэтому, если вы пытаетесь найти максимальное значение в векторе, просто убедитесь, что ваш вектор не имеет типа Factor .