Como posso manter NA quando altero os níveis

Eu construo um vetor de fatores contendo NA.

my_vec <- factor(c(NA,"a","b"),exclude=NULL)
levels(my_vec)
# [1] "a" "b" NA 

Eu mudo um desses níveis.

levels(my_vec)[levels(my_vec) == "b"] <- "c"

NA desaparece.

levels(my_vec)
# [1] "a" "c"

Como posso mantê-lo?

EDITAR

O @rawr deu uma boa solução que pode funcionar na maioria das vezes, funciona para o meu exemplo específico anterior, mas não para o que mostrarei abaixo. O Hack-R tinha uma opção pragmática usando o addNA, eu poderia fazê-lo funcionar com isso. mas eu prefiro uma solução totalmente geral

Veja este problema generalizado

my_vec <- factor(c(NA,"a","b1","b2"),levels = c("a",NA,"b1","b2"),exclude=NULL)
levels(my_vec)
[1] "a"  NA   "b1" "b2"
levels(my_vec)[levels(my_vec) %in% c("b1","b2")] <- "c"
levels(my_vec)
[1] "a" "c"      # NA disppeared

solução @ @ rawr:

my_vec <- factor(c(NA,"a","b1","b2"),levels = c("a",NA,"b1","b2"),exclude=NULL)
levels(my_vec)
[1] "a"  NA   "b1" "b2"
attr(my_vec, 'levels')[levels(my_vec) %in% c("b1","b2")] <- "c"
levels(my_vec)
droplevels(my_vec)
[1] "a" NA  "c" "c" # c is duplicated

@ Solução do Hack-R:

my_vec <- factor(c(NA,"a","b1","b2"),levels = c("a",NA,"b1","b2"),exclude=NULL)
levels(my_vec)
[1] "a"  NA   "b1" "b2"
levels(my_vec)[levels(my_vec) %in% c("b1","b2")] <- "c"
my_vec <- addNA(my_vec)
levels(my_vec)
[1] "a" "c" NA     # NA is in the end

eu querolevels(my_vec) == c("a",NA,"c")

questionAnswers(2)

yourAnswerToTheQuestion