当“to”参数是一个因素时,plyr中的mapvalues给出了意想不到的输出......这是一个错误吗?

时间:2013-03-20 06:17:35

标签: r plyr

当我在plyr包中使用mapvalues(plyr v1.8,R v2.15.1 Roasted Marshmallows)时,当“to”参数是一个因子时,我得到一个奇怪的结果。例如,

v1 = c(1,2,2,1,2)

mapvalues(v1, from = c(1, 2), to = factor( c('A', 'B') ) )

返回

[1] 1 2 2 1 2

而不是

[1] A B B A B
Levels: A B

对我而言,它看起来可能是一个错误,但我想在打扰开发人员之前先与其他人核实。这是一个错误吗?

2 个答案:

答案 0 :(得分:2)

您需要从factor()中删除mapvalues()。转换为因子可以在更换值后完成。

v1<-mapvalues(v1, from = c(1, 2), to = c('A', 'B')) 
#Now convert to factor
v1<-as.factor(v1)
v1
[1] A B B A B
Levels: A B

答案 1 :(得分:2)

这很可能不是一个错误。因子在内部存储为整数。如果您有一个因子并希望映射到因子的级别而不是内部整数存储值,则可以先在因子上调用levels

mapvalues(v1, from = c(1, 2), to = levels(factor(c('A', 'B'))))

如果您希望结果是一个因素,那么之后只需在结果上调用factor