我有一张带有科学记数的数据表,例如1.1e-07
当我尝试使用as.numeric将这些数字转换为正常数字时,R会给出错误的数字,例如:
1.1e-07: 5977
1.4e-06: 5633
等。
我该如何解决这个问题?
更新:谢谢,这真的是关于因素。
答案 0 :(得分:3)
您的号码很可能被定义为因素。这将导致as.numeric
不返回输入的“值”,而是返回因子级序列号。
x <- as.factor(c(1.1e-7, 2e-8)) ## convert two numbers to factors
as.numeric(x)
[1] 2 1
要解决此问题,请确保您读取的数据不是数据源中的因素。
请注意,快速而肮脏的解决方案就像是
as.numeric(as.character(x))
[1] 1.1e-07 2.0e-08
format(as.numeric(as.character(x)), scientific = F)
[1] "0.00000011" "0.00000002"
顺便说一句,科学记数法在R中是标准的。format
将数字转换为字符。