2017-02-25 2 views
-1

lm()을 실행하려는 시도에서 R은 2 레벨 미만의 요소가있는 오류를 반환했습니다. 다음은 유형 및 '수준'의 3 가지 항목을 나열한 간단한 표입니다.unique() 및 nlevels()의 일치하지 않는 출력

length(unique(x[,i]))nlevels(x[,i])과 같은 출력을 제공하지 않는 이유는 무엇입니까?

levels

+1

당신이 ... 고유 한 값보다 더 많은 수준을 볼 수있는'X = 요인 (c ("a", "b"), 수준 = c ("a", "b", "c"))'. 이런 일이 발생할 수있는 한 가지 방법은 데이터를 하위 집합으로 지정하는 것입니다. 'd1 = data.frame (x = letters [1 : 4]); d2 = d1 [d1 $ x % % c ("a", "b"),, drop = FALSE]; str (d2 $ x)'. 'droplevels'는 유용한 함수입니다. – user20650

답변

1

한 가지 가능한 이유는 NA는 고유 한 값으로 계산되지만이다 요인에없는 수준 :

> a <- as.factor(c("A","B","A",NA)) 
> unique(a) 
[1] A B <NA> 
Levels: A B 
> length(unique(a)) 
[1] 3 
> levels(a) 
[1] "A" "B" 
> nlevels(a) 
[1] 2 
+0

이것은 유용한 힌트이지만 1 레벨 인식으로 계산됩니다. 위에서 네 번째 요소에서 10 개의 고유 값과 nlevels = 0을가집니다. – braxtonlewis

+0

@braxtonlewis, 당신은 그 nlevels() = 0 레코드가 모두 정수 또는 숫자임을 알 수 있습니다. 왜냐하면'unique '는 모든 타입에 적용될 수 있기 때문에'nlevels'는'factor'에만 적용될 수 있습니다. –

관련 문제