sys.call
Get the System Evaluator State
Description
Returns information from the evaluator stack.
Usage
sys.call(which = 0)
sys.frame(which = 0)
sys.nframe()
sys.function(which = 0)
sys.parent(n = 1)
parent.frame(n = 1)
sys.calls()
sys.frames()
sys.parents()
sys.on.exit()
sys.status()
Arguments
which |
the stack frame number if strictly positive; the current frame if zero.
Otherwise, the number of stack frames to go back.
|
n |
the number of stack frames to go back.
|
Details
All of these functions return various objects describing the current
state of the evaluator in terms analogous to the model described in
chapter 11 of Becker, Chambers and Wilks. The first six functions
describe a particular stack frame: by the default, the current frame
(for example, the function call from which sys.call was called).
Most of the remaining functions describe the list of all stack frames.
Value
sys.call | returns the actual call for the frame specified
by which. By default, which is the stack frame in which
the call to sys.call is made. |
sys.frame | returns the local environment in the stack frame
specified by which. By default, sys.frame returns the
global environment. |
sys.nframe | returns the numerical index of the current
stack frame in the stack. |
sys.function | returns the definition of the function being
called in the stack frame n (by default, the current stack
frame). |
sys.parent | returns the index in the list of stack frames
of the parent (that is, the caller) of the current function. The
argument to sys.parent specifies how many steps to go back in
the call chain. (By default, it goes to the caller of the caller of
sys.parent). |
parent.frame | returns the environment of the parent (that
is, the caller) of the current function. The argument to
parent.frame specifies how many steps to go back in the call
chain. (By default, it goes back to the caller of the caller of
parent.frame). |
All stack frames:
sys.calls | returns the list of the function calls that
generated the frames. |
sys.frames | returns a list with the local environments for
the stack frames. |
sys.parents | returns the indices of the parent frames for
each of the frames. |
sys.on.exit | returns the list of expressions given to
on.exit and currently still scheduled to be evaluated on exit
from the corresponding frame. |
sys.status | returns the complete internal evaluator status;
that is, everything above. |
References
Becker, R.A., Chambers, J.M., and Wilks, A.R. (1988)
The New S Language.
Wadsworth and Brooks/Cole. Pacific Grove, CA.
Note
- Both sys.call and match.call return an object of class
call; however, sys.call returns the actual call (with
argument names missing or abbreviated), and match.call returns
the call for which the arguments are specified by name. Use
match.call when you create a call component or attribute.
-
If the caller of the current function is not on the call stack, then
sys.parent returns 0 and parent.frame returns the global
environment.
-
sys.frame interprets which differently from the other
functions. sys.frame(0) returns the global envionment, not
the current environment.
-
The result of these functions are based on the call stack seen by
the function that calls them. Due to lazy evaluation, some stack
frames might be hidden. The exception is sys.on.exit,
which sees all stack frames.
See Also
Examples
myplot <- function(x, y)
{
the.call <- sys.call()
xname <- deparse(the.call[[2]])
yname <- deparse(the.call[[3]])
plot(x, y, xlab = xname, ylab = yname)
return(list(call = the.call))
}