1

当我在 plyr 包(plyr v1.8,R v2.15.1 Roasted Marshmallows)中使用 mapvalues 时,当“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

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

4

2 回答 2

2

您需要删除factor()from 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
于 2013-03-20T06:22:55.457 回答
2

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

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

如果您希望结果成为一个因素,那么只需factor在之后调用结果即可。

于 2013-03-20T06:26:07.067 回答