Test for Recursive or Atomic Objects

DESCRIPTION:
Returns a logical value which depends on the mode of the input.

USAGE:
is.atomic(x)
is.language(x)
is.recursive(x)

REQUIRED ARGUMENTS:
x:
any S-PLUS object.

VALUE:
is.atomic returns TRUE if the mode of x is numeric, logical, character, complex or null. For example, an object of mode list is not atomic, while a matrix of mode numeric is atomic.

is.language returns TRUE if x is some object that is part of the language (the value of a call to parse or an object that has one of the special modes used by the S-PLUS parser such as call, if, expression).

is.recursive returns TRUE if the mode of x indicates that x is a recursive object; that is, an object that can contain other objects as elements; most commonly list, but also expression, graphics, and a number of modes used in manipulating the language.


DETAILS:
is.recursive and is.atomic are not quite complementary, but they do not overlap. For example, objects of mode name are neither recursive nor atomic.

SEE ALSO:
vector , mode .

EXAMPLES:
is.language(lsfit) # returns FALSE
is.recursive(lsfit) # returns TRUE
is.language(break) # returns TRUE
is.atomic(NULL) # returns TRUE
is.language(as.call(ls("a*"))) # returns TRUE
is.recursive(as.call(ls("a*"))) # returns TRUE
is.language(as.name(foo)) # returns TRUE