【发布时间】:2011-10-31 00:01:54
【问题描述】:
一个不可设置函数的例子是labels。您只能在使用因子函数创建因子标签时设置它们。没有labels<- 功能。并不是说因素中的“标签”和“级别”有任何意义......
> fac <- factor(1:3, labels=c("one", "two", "three"))
> fac
[1] one two three
Levels: one two three
> labels(fac)
[1] "1" "2" "3"
好的,我询问了标签,可能会假设是因子调用所设置的,但我得到了一些相当的东西......这个词是什么,不直观?
> levels(fac)
[1] "one" "two" "three"
所以看来,设置标签实际上是设置级别。
> fac <- factor(1:3, levels=c("one", "two", "three"))
> levels(fac)
[1] "one" "two" "three"
好的,正如预期的那样。那么设置关卡时的标签是什么?
> fac <- factor(1:3, levels=c("one", "two", "three"), labels=c("x","y", "z") )
> labels(fac)
[1] "1" "2" "3"
> levels(fac)
[1] "x" "y" "z"
如果你问我,感觉很奇怪。似乎因子的“标签”论据胜过任何“水平”论据来规范水平。为什么会这样?似乎是一个混乱的术语。为什么labels() 会返回我想用 as.character(as.numeric(fac)) 检索的内容?
(这是关于分配函数的较早答案中的一个切线评论[标记为此类],我被要求转到一个问题。所以这是你启发我的机会。)
【问题讨论】:
-
请注意,在您的第二个和第三个示例中,
fac或str(fac)会显示您的因子都是NAs,因为您提供的levels规范与x的值 ...