Hello, I have a general function which I am used for calculations. I call this function through different functions corresponding to different particular cases of this method. The particular function create a list, and in this list, I have a function which can modify other elements of the list for updating purposes. See the example below: particular1=function() { obj=list() obj$names=c("obj$c1","obj$c2") obj$c1=8 obj$update=function(obj) {obj$c1=15; print(obj$c1)} general(obj) } general=function(obj){ obj$c2<-10 print(obj$c1*obj$c2) upd=eval(parse(text=deparse(obj$update))) upd(obj) print(obj$c1*obj$c2) } particular1() > particular1() [1] 80 [1] 15 [1] 80 I would like to have: 80, 15, 150. But, the function obj$update change the value locally and do not change the "global" value of obj$c1. I think it is a problem related environment of the function (I have read the previous discussion on this list "do.call and environment") but can not find how to solve it. Hope that somebody can help me, Sincerely. St?phane DRAY -------------------------------------------------------------------------------------------------- D?partement des Sciences Biologiques Universit? de Montr?al, C.P. 6128, succursale centre-ville Montr?al, Qu?bec H3C 3J7, Canada Tel : 514 343 6111 poste 1233 E-mail : stephane.dray at umontreal.ca -------------------------------------------------------------------------------------------------- Web http://www.steph280.freesurf.fr/