当我在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
对我而言,它看起来可能是一个错误,但我想在打扰开发人员之前先与其他人核实。这是一个错误吗?
答案 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
。