Skip to content
Back to formatted view

Raw Message

Message-ID: <88ED1074-4C48-4BC2-A493-B94B7DAD3889@comcast.net>
Date: 2013-07-24T18:35:55Z
From: David Winsemius
Subject: Levels of a factor
In-Reply-To: <CAEJ+j1suE35XM5y49AeODi3hj=fbSY73Wx6NEw8oyr6n_amhVg@mail.gmail.com>

On Jul 24, 2013, at 6:25 AM, Borja Rivier wrote:

> Hi all,
> 
> I am having a bit of trouble using the levels() function.
> I have a factor with many elements, and when I use the function levels() to
> extract the list of unique elements, some of the elements returned are not
> actually in the factor.
> 
> For example I would have this:
> 
>> vector <- dataset$Benchmark
>> class(vector)
> [1] "factor"
>> length(vector)
> [1] 35615
>> vector2 <- levels(vector)
>> length(which(!(vector2 %in% vector)))
> [1] 235
> 
> Does anyone know how this is possible?
> 

When you take a subset of a factor vector, the levels are not reduced to the unique values in the new vector. There is droplevels function that would need to be applied if you already have such a vector, and there is a drop argument that you need to set to TRUE in the `[.factors` call if you want to "attack the problem at the source".

?`[.factor
?droplevels

-- 

David Winsemius
Alameda, CA, USA