我们已经看到许多关于如何在将因子转换为数字(例如this和this )时保存小数位的问题。但我没有看到任何对字符数据而不是因子数据执行相同操作的内容。以下是我尝试过但没有成功的方法:
f1 <- c("402313.01399128098", "402896.30908451998", "403165.63827027398", "403169.06116369402", "402891.96329268801", "402239.74412469601",
"402271.54950727499", "402313.01399128098")
as.numeric(as.character(f1)) # does not work
f2 <- as.factor(f1)
as.numeric(as.character(f2)) # my decimals are GONE
f3 <- levels(f2)
as.numeric(f3) # my decimals are gone again
Run Code Online (Sandbox Code Playgroud)
我明白了
[1] 402239.7 402271.5 402313.0 402892.0 402896.3 403165.6 403169.1
Run Code Online (Sandbox Code Playgroud)
没有丢失小数位。但我不知道为什么它没有显示。和options(digits = 15)可以看到所有的小数。
教训options():你可以在决定问这样的问题之前就跑。
所有的数字都还在那里。这只是默认的打印方法。
new.vec <- as.numeric(f1)
print(new.vec, digits=20)
#[1] 402313.01399128098 402896.30908451998 403165.63827027398
#[4] 403169.06116369402 402891.96329268801 402239.74412469601
#[7] 402271.54950727499 402313.01399128098
Run Code Online (Sandbox Code Playgroud)
您还可以使用 更改默认值options(digits = n)。
更多信息请参见此处。