[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