【发布时间】:2012-05-14 00:42:54
【问题描述】:
在回答另一个问题时,@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)
)
显然这是对级别函数的某种调用,但我不知道这里做了什么。这种魔法叫什么名字,如何提升我在这个领域的魔法能力?
【问题讨论】:
-
还有
names<-和[<-。 -
另外,我在另一个问题上想知道这一点,但没有问:
structure(...)构造有什么原因,而不仅仅是data.frame(product = c(11L, 11L, ..., 8L))? (如果那里发生了什么魔法,我也想使用它!) -
这是对
"levels<-"函数的调用:function (x, value) .Primitive("levels<-"),有点像X %in% Y是"%in%"(X, Y)的缩写。 -
@dbaupp 对于可重现的示例非常方便:stackoverflow.com/questions/5963269/…
-
我不知道为什么有人投票结束这个没有建设性? Q 有一个非常明确的答案:示例中使用的语法是什么意思,在 R 中是如何工作的?