我有一个因素RFyhat我想要转换为数字向量。我已经发现了
as.numeric(levels(RFyhat))[RFyhat]
按照需要工作,我用这种结构玩了一下:
c(1,2,20,4,5,6,7)[RFyhat]
也按预期工作(RFyhat
有7个级别。)
所以我理解了这种结构的行为,但我想知道是否有人能够解释这种语法是如何工作的,或者它是否只是'语法糖'。更具体地说,[RFyhat]
是否充当索引向量?如果是,那么当用作索引时,因子通常如何表现?
答案 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))[...]
。