
Last chance! 50% off unlimited learning
Sale ends in
is.atomic
returns TRUE
if x
is of an atomic type
(or NULL
) and FALSE
otherwise. is.recursive
returns TRUE
if x
has a recursive
(list-like) structure and FALSE
otherwise.
is.atomic(x)
is.recursive(x)
is.atomic
is true for the atomic types
("logical"
, "integer"
, "numeric"
,
"complex"
, "character"
and "raw"
) and NULL
. Most types of objects are regarded as recursive, except for the atomic
types, NULL
and symbols (as given by as.name
).
It is common to call the atomic types ‘atomic vectors’, but
note that is.vector
imposes further restrictions: an
object can be atomic but not a vector (in that sense).
These are primitive functions.
is.list
,
is.language
, etc,
and the demo("is.things")
.
require(stats)
is.a.r <- function(x) c(is.atomic(x), is.recursive(x))
is.a.r(c(a = 1, b = 3)) # TRUE FALSE
is.a.r(list()) # FALSE TRUE - a list is a list
is.a.r(list(2)) # FALSE TRUE
is.a.r(lm) # FALSE TRUE
is.a.r(y ~ x) # FALSE TRUE
is.a.r(expression(x+1)) # FALSE TRUE (nowadays)
Run the code above in your browser using DataLab