Limpando os níveis dos fatores (reduzindo vários níveis / rótulos)

Qual é a maneira mais eficiente (ou seja, eficiente / apropriada) de limpar um fator que contém vários níveis que precisam ser recolhidos? Ou seja, como combinar dois ou mais níveis de fator em um.

Aqui está um exemplo onde os dois níveis "Sim" e "Y" devem ser recolhidos para "Sim" e "Não" e "N" recolhidos para "Não":

## Given: 
x <- c("Y", "Y", "Yes", "N", "No", "H")   # The 'H' should be treated as NA

## expectedOutput
[1] Yes  Yes  Yes  No   No   <NA>
Levels: Yes No  # <~~ NOTICE ONLY **TWO** LEVELS

Uma opção é limpar as cordas antes de usar a mãosub e amigos.

Outro método, é permitir o rótulo duplicado, depois soltá-los

## Duplicate levels ==> "Warning: deprecated"
x.f <- factor(x, levels=c("Y", "Yes", "No", "N"), labels=c("Yes", "Yes", "No", "No"))

## the above line can be wrapped in either of the next two lines
factor(x.f)      
droplevels(x.f) 

Contudo,existe uma maneira mais eficaz?

Enquanto eu sei que olevels elabels argumentos devem ser vetores, eu experimentei listas e listas nomeadas e vetores nomeados para ver o que acontece Escusado será dizer que nenhum dos seguintes me aproximou mais do meu objetivo.

  factor(x, levels=list(c("Yes", "Y"), c("No", "N")), labels=c("Yes", "No"))
  factor(x, levels=c("Yes", "No"), labels=list(c("Yes", "Y"), c("No", "N")))

  factor(x, levels=c("Y", "Yes", "No", "N"), labels=c(Y="Yes", Yes="Yes", No="No", N="No"))
  factor(x, levels=c("Y", "Yes", "No", "N"), labels=c(Yes="Y", Yes="Yes", No="No", No="N"))
  factor(x, levels=c("Yes", "No"), labels=c(Y="Yes", Yes="Yes", No="No", N="No"))

questionAnswers(9)

yourAnswerToTheQuestion