R_as.numeric()函数在转换小数时返回无意义结果的解决

来源:互联网 发布:aⅴ淘宝在线视频超碰 编辑:程序博客网 时间:2024/06/06 10:48

本文重点解决as.numeric()函数将factor转为数值时得出的无意义结果的解决

假设有数据框aaa

x   |    y     |       value ------------------------------------------a1      b2        0.510665432157769a2      b3        0.887655678543227..      ..              ...

运行as.numeric(aaa[1,3]),返回的结果居然是123?当然,这只是个栗子,为了表达问题所在。真正运行时不一定得到的结果是123

在R help中找到如下参考

Warning

If x is a factor, as.numeric will return the underlying numeric (integer) representation, which is often meaningless as it may not correspond to the factor levels, see the ‘Warning’ section in factor (and the 2nd example below).

看到meaningless这个词了吗,意思是如果使用as.numeric转换一个因子,则通常会返回一个无意义的结果。

那么我们如何解决呢?

嵌套使用as.numeric(as.character(aaa[1,3]))

这样返回的就是正常应转化的数值,而不是一个无意义的结果如一百二十三。

但上面的方法有一个问题,在小数点后位数太大时输出结果会四舍五入。

对于这个,我们可以使用print()函数中的参数digit,print(as.numeric(as.character(aaa[1,3])),digits = 16),输出的就是不带四舍五入的完整值

理论上format(xx, digits = 16)也可以保证长度,但我没在这种情况下试。


visitor tracker
访客追踪插件


0 0
原创粉丝点击