[R] Recall() and sapply()

McGehee, Robert Robert.McGehee at geodecapital.com
Wed Mar 30 16:14:29 CEST 2005


I doubt it's possible to use Recall inside a sapply like this. sapply
(and lapply) make a copy of the function (FUN <- match.fun(FUN)) before
passing it inside an internal function (rval <- .Internal(lapply(X,
FUN)). So, while I'm not precisely sure how Recall is coded up, I bet
that once it is copied inside of sapply (and lapply), it loses the
context from which it was called.

I can think of a couple ways around this. First, you could construct a
for loop instead of a sapply and use Recall. Second, you could replace
Recall by just asking R what the name of the calling function is and
pass that in to sapply. Something like this should work:

sapply(n, match.fun(sys.call()[[1]]))

HTH,
Robert

-----Original Message-----
From: Robin Hankin [mailto:r.hankin at soc.soton.ac.uk] 
Sent: Wednesday, March 30, 2005 3:28 AM
To: R-help at stat.math.ethz.ch
Subject: [R] Recall() and sapply()


Hi.

I'm having difficulty following the advice given in help(Recall).  
Consider the two
following toy functions:


f1 <- function(n){
   if(length(n)>1){return(sapply(n,f1))}
   matrix(n,n,n)
}

f2 <- function(n){
   if(length(n)>1){return(sapply(n,Recall))}
   matrix(n,n,n)
}


f1() works as desired (that is, f(1:3), say, gives me a three element 
list whose i-th element
is an i-by-i matrix whose elements are all i).

But f2() doesn't.

How do I modify either function to use Recall()?  What exactly is 
Recall() calling here?




--
Robin Hankin
Uncertainty Analyst
Southampton Oceanography Centre
European Way, Southampton SO14 3ZH, UK
  tel  023-8059-7743

______________________________________________
R-help at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html




More information about the R-help mailing list