Confusão entre níveis de fator e rótulos de fator

Parece haver uma diferença entre os níveis e os rótulos de um fator em R. Até agora, eu sempre pensei que os níveis eram o nome "real" dos níveis dos fatores e os rótulos eram os nomes usados para a saída (como tabelas e gráficos) ) Obviamente, esse não é o caso, como mostra o exemplo a seguir:

df <- data.frame(v=c(1,2,3),f=c('a','b','c'))
str(df)
'data.frame':   3 obs. of  2 variables:
 $ v: num  1 2 3
 $ f: Factor w/ 3 levels "a","b","c": 1 2 3

df$f <- factor(df$f, levels=c('a','b','c'),
  labels=c('Treatment A: XYZ','Treatment B: YZX','Treatment C: ZYX'))
levels(df$f)
[1] "Treatment A: XYZ" "Treatment B: YZX" "Treatment C: ZYX"

Eu pensei que os níveis ('a', 'b', 'c') ainda pudessem ser acessados de alguma forma durante o script, mas isso não funciona:

> df$f=='a'
[1] FALSE FALSE FALSE

Mas isso faz:

> df$f=='Treatment A: XYZ' 
[1]  TRUE FALSE FALSE

Então, minha pergunta consiste em duas partes:

Qual é a diferença entre níveis e rótulos?

possível ter nomes diferentes para os níveis de fator para scripts e saíd

Background: Para scripts mais longos, o script com níveis curtos de fator parece ser muito mais fácil. No entanto, para relatórios e plotagens, esses níveis curtos de fator podem não ser adequados e devem ser substituídos por nomes mais preciso