Adicionar nível extra aos fatores no quadro de dados

Eu tenho um quadro de dados com colunas de fator numérico e ordenado. Eu tenho muitos valores de NA, então nenhum nível é atribuído a eles. Alterei NA para "Sem resposta", mas os níveis das colunas de fator não contêm esse nível, então aqui está como eu comecei, mas não sei como finalizá-lo de uma maneira elegante:

addNoAnswer = function(df) {
   factorOrNot = sapply(df, is.factor)
   levelsList = lapply(df[, factorOrNot], levels)
   levelsList = lapply(levelsList, function(x) c(x, "No Answer"))
   ...

Existe uma maneira de aplicar diretamente novos níveis às colunas de fator, por exemplo, algo como isto:

df[, factorOrNot] = lapply(df[, factorOrNot], factor, levelsList)

Obviamente, isso não funciona corretamente.

Quero que a ordem dos níveis seja preservada e o nível "Sem resposta" seja adicionado ao último lugar.

questionAnswers(7)

yourAnswerToTheQuestion