utilisation de eval

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

utilisation de eval

Messagepar Christophe Genolini » 28 Oct 2008, 08:11

Bonjour,

J'ai une fonction qui fait des calculs assez long. Du coup, je voudrais faire des sauvegardes régulièes. Mais je galère...

La fonction travaille sur une variable globale qui contient une liste, et a chaque boucle, un nouvel élément est ajouté à la liste. J'ai récupérer le nom de la variable global grace a un "deparse", je voudrais faire un save grace a "save" mais je n'arrive pas a me servir de "eval" :

Code : Tout sélectionner


VarGlobal <- list()

f <- function(x){
    nameObject<-deparse(substitute(x))

    for (i in 1:100){
       # Nombreux calculs, avec au final la modification de VarGlobal au niveau Parent

       save(eval(nameObject),file=paste(nameObject,".Rdata",sep=""))
   }
}

f(VarGlobal)


Des suggestions ?

Christophe

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 28 Oct 2008, 08:40

Bonjour,

Code : Tout sélectionner

eval(parse(text=paste("save(",nameObject,",file=",dQuote(paste(nameObject,".Rdata",sep="")),")",sep="")))


Maxime

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

Messagepar Christophe Genolini » 28 Oct 2008, 08:55

Capté !
Le eval doit englober le tout et non simplement le nom de la variable.

Merci !

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 28 Oct 2008, 09:01

Re,

Dans ce cas il semblerait, je n'ai pas réussi à faire autrement ... Mais le eval évalue juste une expression.

Mais il y avait plus simple ... Je viens juste de le voir.

Code : Tout sélectionner

save(list=nameObject,file=paste(nameObject,".Rdata",sep=""))


Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité