numeric {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))

[Package base version 2.9.1 Index]