【发布时间】:2021-12-25 13:34:58
【问题描述】:
我试图了解 R 中的各种对象是如何由原子向量和通用向量组成的。
可以通过手动设置属性names、row.names 和class,从list 构造data.frame,请参阅here。
我想知道这对于内部表示为整数向量的因子是如何工作的。我想出的解决方案如下:
> f <- 1:3
> class(f) <- "factor"
> levels(f) <- c("low", "medium", "high")
Warning message:
In str.default(val) : 'object' does not have valid levels()
但由于某种原因,这看起来仍然与正确构造的因素不同:
> str(unclass(f))
int [1:3] 1 2 3
- attr(*, "levels")= chr [1:3] "low" "medium" "high"
> str(unclass(factor(c("low", "medium", "high"))))
int [1:3] 2 3 1
- attr(*, "levels")= chr [1:3] "high" "low" "medium"
我错过了什么吗? (我知道这可能不应该在生产代码中使用,而是仅用于教育目的。)
【问题讨论】:
标签: r metaprogramming factors