ในคำตอบสำหรับคำถามอื่น @Marek โพสต์วิธีแก้ปัญหาต่อไปนี้: 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)
)
ซึ่งสร้างเป็นผลลัพธ์:
[1] Generic Generic Bayer Bayer Advil Tylenol Generic Advil Bayer Generic Advil Generic Advil Tylenol
[15] Generic Bayer Generic Advil Bayer Bayer
นี่เป็นเพียงภาพเวกเตอร์ที่พิมพ์ออกมาเท่านั้นดังนั้นในการจัดเก็บคุณสามารถทำให้สับสนได้มากขึ้น:
res <- `levels<-`(
factor(dat$product),
list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)
)
เห็นได้ชัดว่านี่เป็นการเรียกใช้ฟังก์ชันระดับ แต่ฉันไม่รู้ว่ากำลังทำอะไรอยู่ที่นี่ คำศัพท์สำหรับเวทมนตร์ประเภทนี้คืออะไรและฉันจะเพิ่มความสามารถทางเวทมนตร์ของฉันในโดเมนนี้ได้อย่างไร
structure(...)
สร้างแทนที่จะเป็นเพียงแค่data.frame(product = c(11L, 11L, ..., 8L))
? (ถ้ามีเวทมนตร์เกิดขึ้นฉันก็อยากจะใช้มันด้วย!)
"levels<-"
ฟังก์ชัน: function (x, value) .Primitive("levels<-")
sort of like X %in% Y
เป็นคำย่อของ"%in%"(X, Y)
.
names<-
[<-