as.numeric() removes decimal places in R, how to change?

R is basically following some basic configuration settings for printing the number of required digits. You can change this with the digits option as follows:

> options(digits=9)
> y <- as.character("0.912345678")
> as.numeric(y)
[1] 0.912345678

Small EDIT for clarity: digits corresponds to the number of digits to display in total, and not just the number of digits after the comma.

For example,

> options(digits=9)
> y <- as.character("10.123456789")
> as.numeric(y)
[1] 10.1234568

In your example above the leading zero before the comma is not counted, this is why 9 digits was enough to display the complete number.


What's going on is that R is only displaying a fixed number of digits.

This R-help post explains what's going on. To quote Peter Dalgaard:

"There's a difference between an object and the display of an object."

With your example,

y2 = as.numeric(y)
print(y2)
# [1] 0.9123457 

but subtract 0.9 to see

y2 - 0.9
# [1] 0.01234568

Updated based upon the comment by @Khashaa To change your display use

options(digits = 9)
y2
# [1] 0.912345678

Tags:

R