double {base} | R Documentation

## Double-Precision Vectors

### Description

Create, coerce to or test for a double-precision vector.

### Usage

    double(length = 0)
    as.double(x, ...)
    is.double(x)

    single(length = 0)
    as.single(x, ...)

### Arguments

`length` | desired length.
`x` | object to be coerced or tested.
`...` | further arguments passed to or from other methods.

### Details

`double` creates a double-precision vector of the specified length. The elements of the vector are all equal to `0`. It is identical to `numeric` (and `real`).

`as.double` is a generic function. It is identical to `as.numeric` (and `as.real`). Methods should return an object of base type `"double"`.

`is.double` is a test of double type.

R has no single precision data type. All real numbers are stored in double precision format. The functions `as.single` and `single` are identical to `as.double` and `double` except they set the attribute `Csingle` that is used in the `.C` and `.Fortran` interface, and they are intended only to be used in that context.

### Value

`double` creates a double-precision vector of the specified length. The elements of the vector are all equal to `0`.
`as.double` attempts to coerce its argument to be of double type: like `as.vector` it strips attributes including names. (To ensure that an object is of double type without stripping attributes, use `storage.mode`.) Character strings containing either a decimal representation or a hexadecimal representation (starting with `0x` or `0X`) can be converted. `as.double` for factors yields the codes underlying the factor levels, not the numeric representation of the labels, see also `factor`.
`is.double` returns `TRUE` or `FALSE` depending on whether its argument is of double type or not.

### 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

`integer`, `numeric`, `storage.mode`.

### Examples

    is.double(1)
    all(double(3) == 0)

[Package base version 2.8.1 Index]