[R] Returning to parent function
David Winsemius
dwinsemius at comcast.net
Tue Mar 17 00:02:58 CET 2015
On Mar 16, 2015, at 3:08 PM, Saptarshi Guha wrote:
> Hello,
>
> I would like a function X to return to the place that called the
> function XParent that called this function X.
>
> Y calls XParent
> Y = function(){
> XParent()
> print("hello")
> }
>
> XParent calls X
>
> XParent = function(){
> X()
> print("H")
> }
>
> X returns to the point just after the call to XParent. Hence
> print("H") is not called, but instead "hello" is printed.
?sys.call # my second reading of your question makes me think this wasn't what was requested.
?return # this would do what was asked for
> XParent = function(){
+ return(sys.call())
+ print("H")
+ }
> Y()
[1] "hello"
# Success
# now to show that a value could be returned if desired
> Y = function(){
+ print(XParent())
+ print("hello")
+ }
> XParent = function(){
+ return(sys.call())
+ print("H")
+ }
> Y()
XParent()
[1] "hello"
>
> X returns to the point just after the call to XParent. Hence
> print("H") is not called, but instead "hello" is printed.
>
> An example of what i'm going for is this
>
> continueIfTrue <- function(filterExp, grpname, subname,n=1){
> y <- substitute(filterExp)
> res <- isn(eval(y, envir=parent.frame()),FALSE)
> ## if res is FALSE, I would like to return from telemStats
> }
>
> telemStats <- function(a,b){
> b <- c(10,12)
> continueIfTrue( { length(b) >=10 }, "progStats","00")
> print("Since the above condition failed, I would not like this
> message to be printed")
> }
I'm afraid there were too many undefined objects to make much sense of that example.
>
> I looked into callCC and signals but dont think i understood correctly.
> Any hints would be appreciated
>
> Kind Regards
> Saptarshi
>
--
David Winsemius
Alameda, CA, USA
More information about the R-help
mailing list