在R中将字符转换为数字而不丢失小数

Sta*_*t-R 3 r

我们已经看到许多关于如何在将因子转换为数字(例如thisthis )时保存小数位的问题。但我没有看到任何对字符数据而不是因子数据执行相同操作的内容。以下是我尝试过但没有成功的方法:

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():你可以在决定问这样的问题之前就跑。

Pie*_*une 5

所有的数字都还在那里。这只是默认的打印方法。

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)

更多信息请参见此处