В тот или иной момент вы можете столкнуться со следующей ошибкой в R:
'max' not meaningful for factors
Это просто указывает на то, что вы пытаетесь получить «максимум» переменной класса factor .
Например, эта ошибка возникает, если мы пытаемся взять максимум следующего вектора:
#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 .