[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ base  (version  3.6.2  ) ](/packages/base/versions/3.6.2)

#  numeric: Numeric Vectors

##  Description

Creates or coerces objects of type ` "numeric" ` . ` is.numeric ` is a more
general test of an object being interpretable as numbers.

##  Usage

    
    
    numeric(length = 0)
    as.numeric(x, …)
    is.numeric(x)

##  Arguments

length

A non-negative integer specifying the desired length. Double values will be
coerced to integer: supplying an argument of length other than one is an
error.

x

object to be coerced or tested.

…

further arguments passed to or from other methods.

##  Value

for ` numeric ` and ` as.numeric ` see ` [ double
](/link/double?package=base&version=3.6.2) ` .

The default method for ` is.numeric ` returns ` TRUE ` if its argument is of [
mode ](/link/mode?package=base&version=3.6.2) ` "numeric" ` ( [ type
](/link/type?package=base&version=3.6.2) ` "double" ` or type ` "integer" ` )
and not a factor, and ` FALSE ` otherwise. That is, ` is.integer(x) ||
is.double(x) ` , or ` (mode(x) == "numeric") && !is.factor(x) ` .

##  Warning

If ` x ` is a ` [ factor ](/link/factor?package=base&version=3.6.2) ` , `
as.numeric ` will return the underlying numeric (integer) representation,
which is often meaningless as it may not correspond to the ` factor ` ` [
levels ](/link/levels?package=base&version=3.6.2) ` , see the ‘Warning’
section in ` [ factor ](/link/factor?package=base&version=3.6.2) ` (and the
2nd example below).

##  S4 methods

` as.numeric ` and ` is.numeric ` are internally S4 generic and so methods can
be set for them _via_ ` setMethod ` .

To ensure that ` as.numeric ` and ` as.double ` remain identical, S4 methods
can only be set for ` as.numeric ` .

##  Note on names

It is a historical anomaly that  R  has two names for its floating-point
vectors, ` [ double ](/link/double?package=base&version=3.6.2) ` and ` [
numeric ](/link/numeric?package=base&version=3.6.2) ` (and formerly had ` real
` ).

` double ` is the name of the [ type ](/link/type?package=base&version=3.6.2)
. ` numeric ` is the name of the [ mode
](/link/mode?package=base&version=3.6.2) and also of the implicit [ class
](/link/class?package=base&version=3.6.2) . As an S4 formal class, use `
"numeric" ` .

The potential confusion is that  R  has used _[ mode
](/link/mode?package=base&version=3.6.2) _ ` "numeric" ` to mean ‘double or
integer’, which conflicts with the S4 usage. Thus ` is.numeric ` tests the
mode, not the class, but ` as.numeric ` (which is identical to ` as.double ` )
coerces to the class.

##  Details

` numeric ` is identical to ` [ double
](/link/double?package=base&version=3.6.2) ` (and ` real ` ). It creates a
double-precision vector of the specified length with each element equal to ` 0
` .

` as.numeric ` is a generic function, but S3 methods must be written for ` [
as.double ](/link/as.double?package=base&version=3.6.2) ` . It is identical to
` as.double ` .

` is.numeric ` is an [ internal generic
](/link/internal%20generic?package=base&version=3.6.2) ` primitive ` function:
you can write methods to handle specific classes of objects, see [
InternalMethods ](/link/InternalMethods?package=base&version=3.6.2) . It is
**not** the same as ` [ is.double
](/link/is.double?package=base&version=3.6.2) ` . Factors are handled by the
default method, and there are methods for classes ` " [ Date
](/link/Date?package=base&version=3.6.2) " ` , ` " [ POSIXt
](/link/POSIXt?package=base&version=3.6.2) " ` and ` " [ difftime
](/link/difftime?package=base&version=3.6.2) " ` (all of which return false).
Methods for ` is.numeric ` should only return true if the base type of the
class is ` double ` or ` integer ` _and_ values can reasonably be regarded as
numeric (e.g., arithmetic on them makes sense, and comparison should be done
via the base type).

##