R 中错误的解释:“max”对于因子而言不显着


有时,您可能会在 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类型。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注