从子函数中的父函数评估函数

时间:2013-11-07 14:20:44

标签: r eval parent-child

说我有一个功能:

MyFunction=function(x,y,z,thelist){            
   a = x+3    
   b = y+4
   c = z+2

   mylist=thelist   
   myfunc1=function(form=a) a+2         
   myfunc2=function(form=b) b+2         
   myfunc3=function(form=c) c+2         

   function(...){         
      .x = as.list(substitute(list(...)))[-1]         
      CombinedList = lapply(seq_along(mylist), function (y,.x) {            
         numbercols = length(eval(.x[[1]])(form=eval(formals(eval(.x[[1]]))$form))[[1]])                
         numbercolsplusone = numbercols+1            
         elementz = matrix(NA,nrow=length(.x),ncol=numbercolsplusone)

         for (i in seq_along(.x)) {                        
           elementz[i,1:numbercols] = eval(.x[[i]])(form=eval(formals(eval(.x[[i]]))$form))[[y]] 

           elementz[i,numbercolsplusone] = substr(as.character(.x[[i]]),1,nchar(as.character(.x[[i]]))-4)                
         }   
         ....
         Some more calculations....
         ....

      },.x)

      return(CombinedList)  
   }
}

然后,我从myfunc1选择myfunc2parent function,然后调用我的玩具函数:

try = Myfunction(x,y,z,thelist)(myfunc1,myfunc2)

这是一个玩具功能,我的实际功能要长得多,需要花费大量时间来计算。我想问题在于子函数内部的for循环 - 可能是我对eval的使用。

这个函数需要更长的时间来计算另一个类似的函数,这个函数只是在我继续使用子函数function(...){之前调用父函数中的所有函数。而不是选择这个玩具示例中的功能。

还有其他更快捷的方法吗?

0 个答案:

没有答案