我有一个因子 RFyhat,我希望将其转换为数字向量。我已经发现了
as.numeric(levels(RFyhat))[RFyhat]
根据需要工作,我已经玩过这个结构:
c(1,2,20,4,5,6,7)[RFyhat]
也可以按预期工作(RFyhat
有 7 个级别)。
所以我理解这种构造的行为,但我想知道是否有人可以解释这种语法是如何工作的,或者它是否只是“语法糖”。更具体地说,是否[RFyhat]
充当索引向量?如果是这样,因子在用作索引时通常如何表现?
我有一个因子 RFyhat,我希望将其转换为数字向量。我已经发现了
as.numeric(levels(RFyhat))[RFyhat]
根据需要工作,我已经玩过这个结构:
c(1,2,20,4,5,6,7)[RFyhat]
也可以按预期工作(RFyhat
有 7 个级别)。
所以我理解这种构造的行为,但我想知道是否有人可以解释这种语法是如何工作的,或者它是否只是“语法糖”。更具体地说,是否[RFyhat]
充当索引向量?如果是这样,因子在用作索引时通常如何表现?
是的,我相信因子在用于索引时会转换为整数,而不是字符或其他任何东西。
看这个例子
> 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))[...]