I have what I hope is a simple question about as.numeric(). I have a bunch of data with numbers written as characters. I want them to be numeric, but as.numeric() takes away decimal spots. For example:
y <- as.character("0.912345678")
as.numeric(y)
0.9123457
Thank you :)
To convert a float or double to integer in R, use the as. integer() function. The as. integer() is an inbuilt function used for an object of class ursaRaster that truncates the decimal part of image values and then converts to type integer.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With