Recode / relevel data.frame factores con diferentes niveles

Cada vez que tengo que recodificar algún conjunto de variables, tengo en mente la función de recodificación de SPSS. Debo admitir que es bastante sencillo. Hay un similarrecode funcionar encar paquete, y hace el truco, pero supongamos que quiero hacer las cosas confactor.

yo tengodata.frame con varias variables con un rango de valores de 1 a 7. Quiero "revertir" los valores de las variables, por lo tanto, reemplazar 1s con 7s, 2s con 6s, 3s con 5s, etc. Puedo utilizarfactor función:

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

Y si corro:

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

El problema comienza cuando quiero recodificar factores que no tienen niveles iguales. Si algún factor, z, tiene nivelesc("1", "3", "4", "6", "7"), ¿hay alguna posibilidad de que pueda "revertir" los niveles, por lo que 1 = 7, 2 = 6, 3 = 5, etc.factor&nbsp;¿función?

¡Otras funciones de recodificación eficientes deberían ser suficientes!