numeric {base} | R Documentation |
Creates or coerces objects of type "numeric"
.
is.numeric
is a more general test of an object being
interpretable as numbers.
numeric(length = 0)
as.numeric(x, ...)
is.numeric(x)
length |
desired length. |
x |
object to be coerced or tested. |
... |
further arguments passed to or from other methods. |
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).
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)
.
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
.
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.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
double
, integer
, storage.mode
.
as.numeric(c("-.1"," 2.7 ","B")) # (-0.1, 2.7, NA) + warning
as.numeric(factor(5:10))