R'deki hataların yorumlanması: 'max' faktörler için anlamlı değil


Bir noktada R’de aşağıdaki hatayla karşılaşabilirsiniz:

 'max' not meaningful for factors

Bu basitçe faktör sınıfına ait bir değişkenin “max” değerini almaya çalıştığınızı belirtir.

Örneğin aşağıdaki vektörün maksimumunu almaya çalıştığımızda bu hata ortaya çıkar:

 #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

Tanım gereği, bir faktör vektörünün değerleri nominal sınıftadır, bu da değerlerin anlamlı bir sırasının olmadığı anlamına gelir. Yani bulunacak bir “max” değeri yok.

Bir faktör vektörünün maksimumunu bulmanın basit bir çözümü, onu basitçe bir karakter vektörüne ve ardından bir sayı vektörüne dönüştürmektir:

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

#[1] 15

Faktör vektörünüz yalnızca faktör adlarını içeriyorsa, faktör vektörünü sayısal bir vektöre dönüştürdükten sonra bile maksimum değeri bulmak mümkün değildir, çünkü bir faktörler listesinin “max” değerini bulmanın bir anlamı yoktur. isimler.

 #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’nin maksimum sayı vektörlerini, tarih vektörlerini ve karakter vektörlerini sorunla karşılaşmadan bulabileceğini belirtmek gerekir:

 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"

Dolayısıyla, bir vektörde maksimum değeri bulmaya çalışıyorsanız, vektörünüzün faktör türünde olmadığından emin olun.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir