is.recursive
Is an Object Atomic or Recursive?
Description
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.
Usage
is.atomic(x) is.recursive(x)
Arguments
x | object to be tested. |
Details
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. Exceptions are the atomic types, NULL
, symbols (as given by as.name
), S4
objects with slots, external pointers, and—rarely visible from R—weak references and byte code, see typeof
.
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.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
See Also
is.list
, is.language
, etc, and the demo("is.things")
.
Examples
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 is.a.r(quote(exp)) # FALSE FALSE
Copyright (©) 1999–2012 R Foundation for Statistical Computing.
Licensed under the GNU General Public License.