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