Başka bir soruya yanıt olarak @Marek şu çözümü yayınladı: 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)
)
Çıktı olarak üreten:
[1] Generic Generic Bayer Bayer Advil Tylenol Generic Advil Bayer Generic Advil Generic Advil Tylenol
[15] Generic Bayer Generic Advil Bayer Bayer
Bu sadece bir vektörün çıktısıdır, bu yüzden onu saklamak için daha da kafa karıştırıcı olanı yapabilirsiniz:
res <- `levels<-`(
factor(dat$product),
list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)
)
Açıkçası bu, seviyeler işlevine bir tür çağrı, ancak burada ne yapıldığı hakkında hiçbir fikrim yok. Bu tür büyücülük için kullanılan terim nedir ve bu alanda büyü yeteneğimi nasıl artırabilirim?
structure(...)
yapı için sadece yerine herhangi bir neden var data.frame(product = c(11L, 11L, ..., 8L))
mı? (Orada bir sihir meydana geliyorsa, onu da kullanmak isterim!)
"levels<-"
fonksiyona bir çağrıdır :, bunun bir function (x, value) .Primitive("levels<-")
tür X %in% Y
kısaltmasıdır "%in%"(X, Y)
.
names<-
ve vardır[<-
.