
278 R Programming for Bioinformatics
which function gave rise to the error. But in many cases, the error arises not
b ecause of that particular line, but rather because of some earlier manipula-
tion of the data that rendered it incorrect. Hence, it is often helpful to know
which functions are active at the time the error was thrown; by active we
mean that the body of the function is being evaluated. In R (and most other
computer languages), when a function is invoked, the statements in the body
of the function are evaluated sequentially. Since each of those statements typ-
ically involves one or more calls to other functions, the set of functions