Ecriture de fonctions?

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

Varin Thibault
Messages : 31
Enregistré le : 08 Nov 2006, 11:23

Ecriture de fonctions?

Messagepar Varin Thibault » 24 Déc 2007, 09:15

Bonjour, j'utilise la fonction rbga du package genalg. C'est un algorithme génétique. Je cherche à enregistrer pendant l'évolution certains chromosomes qui ne seront pas fournis en sortie à la fin de l'évolution. Dans cette fonction, on peut utiliser deux paramètres pour acceder aux populations, la fonction de fitness "evaluate" et une fonction "monitorFunc" permettant d'afficher certains résultats lors de l'évolution. Ces deux paramètres sont donc des fonctions qu'il faut programmer. Si j'ai bien compris quand on programme une fonction on utilise donc à la fin la fonction "return" pour renvoyer vers la sortie les résultats. Le problème est qu'ici ce return fonctionne bien, mais il m'est impossible d'enregistrer le résultat dans une variable de l'environnement puisque l'itération suivante se met en place... Est-il donc possible d'enregistrer dans l'environement de travail une variable généré à l'intérieur d'une fonction et sans passer par la fonction return par exemple?
Merci d'avance!
Bonnes fêtes de fin d'année tout le monde!

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

Messagepar Logez Maxime » 24 Déc 2007, 18:56

Bonjour,

?save

Maxime

Varin Thibault
Messages : 31
Enregistré le : 08 Nov 2006, 11:23

Messagepar Varin Thibault » 26 Déc 2007, 15:52

Bonjour,
La fonction save (ou write d'ailleurs) permet d'enregistrer directement sur le disque dur, et en dehors de l'environnement de travail... je souhaite enregistrer dans un objet (une matrice par exemple) dans l'environnement de travail, comme lorsqu'on fait par exemple
a<-5
Merci!
Thibault

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

Messagepar Logez Maxime » 26 Déc 2007, 18:04

Bonjour,

Pardon j'avais du lire en travers. Regarde ddu côté de assign alors. Tu dois avoir un argument pour lui spécifier l'environnnement que tu veux.

Maxime

Varin Thibault
Messages : 31
Enregistré le : 08 Nov 2006, 11:23

Messagepar Varin Thibault » 27 Déc 2007, 09:24

Bonjour,
effectivement avec assign, cela fonctionne parfaitement.
Je donne donc la solution si ça interesse d'autres personnes :

nom_fonction<-function(paramètres) {
...
variable_locale<-paramètre_1+paramètre_2
assign("nom de la variable qui sera enregistrée dans l'environnement", variable locale à la fonction à enregistrer, envir=.GlobalEnv)
...
}

Merci et bonne année tout le monde!

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Messagepar François Bonnot » 07 Jan 2008, 09:27

Ou plus simplement :

Code : Tout sélectionner

f <- function(){
   a <<- 5
}

> f()
> a
[1] 5


Retourner vers « Questions en cours »

Qui est en ligne

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