Fatores de Recode / relevel data.frame com níveis diferentes

Cada vez que tenho que recodificar algum conjunto de variáveis, tenho em mente a função de recodificação do SPSS. Devo admitir que é bem direto. Há um semelhanterecode função emcar pacote, e ele faz o truque, mas vamos supor que eu quero fazer as coisas comfactor.

eu tenhodata.frame com várias variáveis com valores variando de 1 a 7. Quero "reverter" os valores das variáveis, substituindo 1s por 7s, 2s por 6s, 3s por 5s etc.factor função:

# create dummy factor
set.seed(100)
x <- as.factor(round(runif(100,1,7)))
y <- factor(x, levels = rev(levels(x)))

E se eu correr:

> levels(x)
[1] "1" "2" "3" "4" "5" "6" "7"
> levels(y)
[1] "7" "6" "5" "4" "3" "2" "1"

O problema começa quando quero recodificar fatores que não têm níveis iguais. Se algum fator, z, tiver níveisc("1", "3", "4", "6", "7"), existe alguma chance de eu "reverter" os níveis para que 1 = 7, 2 = 6, 3 = 5 etc., utilizandofactor&nbsp;função?

Outras funções eficientes de recodificação devem ser suficientes!