Convert objects to numeric with as.numeric()
The as.numeric function is a basic R function that converts R objects to numeric. In this tutorial you will learn how to coerce to numeric and how to check if an object is numeric or not.
Syntax and arguments
The syntax of the as.numeric function is the following:
as.numeric(x, ...)
The function takes an object (x) as argument, being:
- x: object to be coerced to numeric.
- âŠ: additional arguments if needed.
Usage
Character to numeric
Consider that you have a character vector containing numbers:
x <- c("19", "28", "26")
x
"19" "28" "26"
In this scenario, if you want to make mathematical operations you will get an error, like in the following example where we try to multiply the vector by two:
x <- c("19", "28", "26")
x <- x * 2
Error in x * 2 : non-numeric argument to binary operator
If you convert your vector to numeric now R will interpret the values as numbers, so you will be able to perform mathematical operations.
x <- c("19", "28", "26")
# Convert 'x' to numeric
x <- as.numeric(x)
x
19 28 26
Now you can multiply the values and get the desired result.
x <- x * 2
x
38 56 52
If the character vector contains non-numeric strings and you use the as.numeric function that element will be converted to NA and R will print âNAs introduced by coercionâ as a warning.
x <- c("19", "28", "26", "A")
# Convert 'x' to numeric
x <- as.numeric(x)
x
Warning message:
NAs introduced by coercion
> x
[1] 19 28 26 NA
Factor to numeric
Consider the following factor for illustration purposes:
f <- factor(c("3", "14", "15", "93"))
f
3 14 15 93
Levels: 14 15 3 93
Note that the levels of the factor doesnât have the same order as the input character vector.
If you want to convert the factor to numeric you will need to use the as.numeric but also the as.character function as follows:
f <- factor(c("3", "14", "15", "93"))
f <- as.numeric(as.character(f))
f
3 14 15 93
A more efficient alternative for long vectors is to use the following code:
f <- factor(c("3", "14", "15", "93"))
f <- as.numeric(levels(f))[f]
f
If you want to convert a factor to the original vector and with the same order never use as.numeric(f), as it wonât return the desired numeric vector. Learn more about factors.
Boolean to numeric
Consider that you have a boolean vector like the following:
b <- c(TRUE, FALSE, TRUE, TRUE, FALSE)
b
TRUE FALSE TRUE TRUE FALSE
You can convert the vector to numeric with the as.numeric function which will convert TRUE to 1 and FALSE to 0.
b <- c(TRUE, FALSE, TRUE, TRUE, FALSE)
b <- as.numeric(b)
b
1 0 1 1 0
Check if an object is numeric with is.numeric
The is.numeric function is useful to check if the data type of you object is numeric or not. If so, it will return TRUE and FALSE if not.
x <- c("19", "28", "26", "A")
# Check if x is numeric
is.numeric(x) # FALSE
# Convert 'x' to numeric
x <- as.numeric(x)
# Check again
is.numeric(x) # TRUE