1

我有一个因子 RFyhat,我希望将其转换为数字向量。我已经发现了

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

根据需要工作,我已经玩过这个结构:

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

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

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

4

1 回答 1

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 

所以 element 1 offac已经返回 element 1 of vec,而不管名称的不同顺序。

个人比较喜欢as.integer(as.character(RFyhat))as.numeric(levels(RFyhat))[...]

于 2012-04-25T15:47:30.203 回答