numeric                 package:base                 R Documentation

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: desired length.

       x: object to be coerced or tested.

     ...: further arguments passed to or from other methods.

Details:

     'numeric' is identical to 'double' (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'.  It is identical to 'as.double' (and 'as.real').

     'is.numeric' is generic: you can write methods to handle specific
     classes of objects, see InternalMethods.  It is *not* the same as
     'is.double'.  Factors are handled by the default method, and there
     are methods for classes '"Date"' and '"POSIXt"' (in all three
     cases the result is 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).

Value:

     for 'numeric' and 'as.numeric' see 'double'.

     The default method for 'is.numeric' returns 'TRUE' if its argument
     is of mode '"numeric"' (type '"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)'.

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', 'as.double' and 'as.real' remain
     identical, S4 methods can only be set for 'as.numeric'.

Note on names:

     It is a historical anomaly that R has three names for its
     floating-point vectors, 'double', 'numeric' and 'real'.

     'double' is the name of the type. 'numeric' is the name of the
     mode and also of the implicit class.  As an S4 formal class, use
     '"numeric"' (there was a formal class '"double"' prior to R
     2.7.0).

     'real' is deprecated and should not be used in new code.

     The potential confusion is that R has used _mode_ '"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.

References:

     Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S
     Language_. Wadsworth & Brooks/Cole.

See Also:

     'double', 'integer', 'storage.mode'.

Examples:

     as.numeric(c("-.1"," 2.7 ","B")) # (-0.1, 2.7, NA)  +  warning
     as.numeric(factor(5:10))

