Trong câu trả lời cho một câu hỏi khác, @Marek đã đăng giải pháp sau: 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)
)
Sản xuất dưới dạng đầu ra:
[1] Generic Generic Bayer Bayer Advil Tylenol Generic Advil Bayer Generic Advil Generic Advil Tylenol
[15] Generic Bayer Generic Advil Bayer Bayer
Đây chỉ là bản in của một vectơ, vì vậy để lưu trữ nó, bạn có thể làm điều khó hiểu hơn:
res <- `levels<-`(
factor(dat$product),
list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)
)
Rõ ràng đây là một số kiểu gọi hàm các cấp, nhưng tôi không biết điều gì đang được thực hiện ở đây. Thuật ngữ cho loại ma thuật này là gì, và làm cách nào để tăng khả năng phép thuật của tôi trong lĩnh vực này?
structure(...)
cấu trúc thay vì chỉ data.frame(product = c(11L, 11L, ..., 8L))
không? (Nếu có phép thuật nào đó xảy ra ở đó, tôi cũng muốn sử dụng nó!)
"levels<-"
hàm function (x, value) .Primitive("levels<-")
:, đại loại như X %in% Y
là một chữ viết tắt của "%in%"(X, Y)
.
names<-
và[<-
.