These type predicates aim to make type testing in R more
consistent. They are wrappers around `base::typeof()`

, so operate
at a level beneath S3/S4 etc.

## Usage

```
is_list(x, n = NULL)
is_atomic(x, n = NULL)
is_vector(x, n = NULL)
is_integer(x, n = NULL)
is_double(x, n = NULL, finite = NULL)
is_complex(x, n = NULL, finite = NULL)
is_character(x, n = NULL)
is_logical(x, n = NULL)
is_raw(x, n = NULL)
is_bytes(x, n = NULL)
is_null(x)
```

## Arguments

- x
Object to be tested.

- n
Expected length of a vector.

- finite
Whether all values of the vector are finite. The non-finite values are

`NA`

,`Inf`

,`-Inf`

and`NaN`

. Setting this to something other than`NULL`

can be expensive because the whole vector needs to be traversed and checked.

## Details

Compared to base R functions:

The predicates for vectors include the

`n`

argument for pattern-matching on the vector length.Unlike

`is.atomic()`

in R < 4.4.0,`is_atomic()`

does not return`TRUE`

for`NULL`

. Starting in R 4.4.0`is.atomic(NULL)`

returns FALSE.Unlike

`is.vector()`

,`is_vector()`

tests if an object is an atomic vector or a list.`is.vector`

checks for the presence of attributes (other than name).