在回答另一个问题时,@Marek发布了以下解决方案:https://dev59.com/Ymkv5IYBdhLWcg3wqiqS#10432263
该链接指向一个stackoverflow网站上的答案。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)
)
显然,这是对levels函数的某种调用,但我不知道在这里做了什么。这种魔法的术语是什么,如何增强在该领域的神奇能力呢?
structure(...)
这种结构,而不是直接使用data.frame(product = c(11L, 11L, ..., 8L))
?(如果有什么神奇的地方,请告诉我,我也想掌握它!) - huon"levels<-"
函数的调用:function (x, value) .Primitive("levels<-")
,有点像X %in% Y
是"%in%"(X, Y)
的缩写。 - BenBarnesdput
命令来输出我通过对实际数据进行子集操作所创建的对象,而dput
默认返回structure
调用。 - Ari B. Friedman