En respuesta a otra pregunta, @Marek publicó la siguiente solución: https://stackoverflow.com/a/10432263/636656
dat <- structure(list(product = c(11L, 11L, 9L, 9L, 6L, 1L, 11L, 5L,
7L, 11L, 5L, 11L, 4L, 3L, 10L, 7L, 10L, 5L, 9L, 8L)), .Names = "product", row.names = c(NA, -20L), class = "data.frame")
`levels<-`(
factor(dat$product),
list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)
)
Que produce como salida:
[1] Generic Generic Bayer Bayer Advil Tylenol Generic Advil Bayer Generic Advil Generic Advil Tylenol
[15] Generic Bayer Generic Advil Bayer Bayer
Esto es solo la impresión de un vector, por lo que para almacenarlo puede hacer lo que es aún más confuso:
res <- `levels<-`(
factor(dat$product),
list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)
)
Claramente, esta es una especie de llamada a la función de niveles, pero no tengo idea de lo que se está haciendo aquí. ¿Cuál es el término para este tipo de hechicería y cómo puedo aumentar mi habilidad mágica en este dominio?
structure(...)
construcción en lugar de solo data.frame(product = c(11L, 11L, ..., 8L))
? (¡Si hay algo de magia sucediendo allí, me gustaría
"levels<-"
función:, una function (x, value) .Primitive("levels<-")
especie de como X %in% Y
es una abreviatura de "%in%"(X, Y)
.
names<-
y[<-
.