R中因子的索引向量

时间:2012-04-25 15:36:57

标签: r

我有一个因素RFyhat我想要转换为数字向量。我已经发现了

as.numeric(levels(RFyhat))[RFyhat]

按照需要工作,我用这种结构玩了一下:

c(1,2,20,4,5,6,7)[RFyhat]

也按预期工作(RFyhat有7个级别。)

所以我理解了这种结构的行为,但我想知道是否有人能够解释这种语法是如何工作的,或者它是否只是'语法糖'。更具体地说,[RFyhat]是否充当索引向量?如果是,那么当用作索引时,因子通常如何表现?

1 个答案:

答案 0 :(得分:2)

是的,我相信在用于索引时,因子会转换为整数,而不是字符或其他任何内容。

看看这个例子

> fac <- factor(letters[c(1,1,2,1,3,3,2,1)])
> vec <- c(b=1, a=2, c=3)
> vec[fac]
b b a b c c a b 
1 1 2 1 3 3 2 1 

因此fac的元素1返回了vec的元素1,而不管名称的顺序是否不同。

我个人更喜欢as.integer(as.character(RFyhat))as.numeric(levels(RFyhat))[...]