Все, что вам нужно сделать, это снова применить множитель () к вашей переменной после подмножества:
> subdf$letters
[1] a b c
Levels: a b c d e
subdf$letters <- factor(subdf$letters)
> subdf$letters
[1] a b c
Levels: a b c
ИЗМЕНИТЬ
Пример примера с параметрами:
factor(ff) # drops the levels that do not occur
Для удаления уровней из всех столбцов факторов в кадре данных вы можете использовать:
subdf <- subset(df, numbers <= 3)
subdf[] <- lapply(subdf, function(x) if(is.factor(x)) factor(x) else x)