Poziomy współczynnika upuszczania w podzestawnej ramce danych

Mam ramkę danych zawierającą czynnik. Podczas tworzenia podzbioru tej ramki danych za pomocąsubset() lub inną funkcję indeksowania, tworzona jest nowa ramka danych. Jednak zmienna czynnikowa zachowuje wszystkie oryginalne poziomy - nawet jeśli nie istnieją w nowej ramce danych.

Stwarza to bóle głowy podczas wykonywania fasetowania lub korzystania z funkcji zależnych od poziomów czynników.

Jaki jest najbardziej zwięzły sposób na usunięcie poziomów z czynnika w mojej nowej ramce danych?

Oto mój przykład:

df <- data.frame(letters=letters[1:5],
                    numbers=seq(1:5))

levels(df$letters)
## [1] "a" "b" "c" "d" "e"

subdf <- subset(df, numbers <= 3)
##   letters numbers
## 1       a       1
## 2       b       2
## 3       c       3    

## but the levels are still there!
levels(subdf$letters)
## [1] "a" "b" "c" "d" "e"

questionAnswers(13)

yourAnswerToTheQuestion