objets et fichiers .RData

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

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

objets et fichiers .RData

Messagepar Eric Wajnberg » 10 Jan 2018, 16:42

Bonjour à tous,

Cette question peut-être surprendra certains, mais, après avoir travaillé avec R durant des années, il reste un point que je ne comprends pas bien, faute de m'y avoir penché dessus en détail. Il s'agit de la gestion des fichiers .RData qui contiennent sur le disque les objets R.

Au lancement d'une session R, un fichier .RData est chargé. Ce fichier se trouve à l'endroit pointé par la sortie de:

Code : Tout sélectionner

Sys.getenv("HOME")

So far, so good.

Dans ce fichier .RData (dans mon cas), j'ai une fonction .First() qui va à un autre endroit sur le disque et qui fait un load() sur l'autre fichier .RData qui s'y trouve (avec l'argument envir = globalenv()) pour récupérer mes objets "de base", mes fonctions les plus utilisées, etc.

Maintenant, je développe des projets différents, qui correspondent à des directories différentes sur mon disque, et j'y sauve mes objets specifiques à ces projets dans autant de fichiers .RData dans ces directories différentes.

Je voudrais que ces différents fichiers .RData contiennent les objets spécifiques à ces projets différents, que je puisse alors les loader lorsque je me mets à travailler sur chacun de ces projets, et qu'il s'ajoutent aux objets de base qui sont dans mon environnement général dont je parle ci-dessus (par exemple en double-cliquant sur ces fichiers pour lancer R ; je suis sous Windows). Ce n'est pas ce qui se passe. Tout se passe comme si l'ensemble des objets de tous les projets sont dans le fichier .RData dans le répertoire pointé par :

Code : Tout sélectionner

Sys.getenv("HOME")

En d'autres termes, si je lance R directement, je récupère tous les objets de tous les projets, ce qui - après pas mal d'années - devient assez lourd (et prends, par exemple, du temps au lancement de R) et guère pratique.

De toute évidence, j'ai loupé quelque chose ici, et je ne trouve aucun aide sur ce point sur le web.

Toute aide est la bienvenue à cet égard.

Cordialement, Eric.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: objets et fichiers .RData

Messagepar Mickael Canouil » 11 Jan 2018, 08:52

Bonjour,

pour être sûr, les ".Rdata" dont vous parlez sont ceux générés par la fonction "save workspace" en fin de session R ? Ou est-ce le résultat d'un "save(object, file = '.Rdata')"?
Mickaël
mickael.canouil.fr | rlille.fr

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: objets et fichiers .RData

Messagepar Eric Wajnberg » 11 Jan 2018, 08:58

Mickael Canouil a écrit :Bonjour,

pour être sûr, les ".Rdata" dont vous parlez sont ceux générés par la fonction "save workspace" en fin de session R ? Ou est-ce le résultat d'un "save(object, file = '.Rdata')"?

Il sont générés (automatiquement) à la sauvegarde de l'image de la session en sortie (en étant dans la bonne directory). Du coup, effectivement tous les objets présents sont sauvés. Le problème est que je récupère tout de même tous ces objets lorsque je lance une session R par défaut, alors que ce n'est pas ce fichier .RData qui est (sensé être) lu..

Merci pour votre disponibilité,

Eric.

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: objets et fichiers .RData [résolu]

Messagepar Eric Wajnberg » 11 Jan 2018, 09:15

Eric Wajnberg a écrit :Il sont générés (automatiquement) à la sauvegarde de l'image de la session en sortie (en étant dans la bonne directory). Du coup, effectivement tous les objets présents sont sauvés. Le problème est que je récupère tout de même tous ces objets lorsque je lance une session R par défaut, alors que ce n'est pas ce fichier .RData qui est (sensé être) lu..

Ok, à force de faire des essais, je crois que je viens de comprendre que - lorsque l'on sauve l'image d'une session en sortie de R - le fichier .RData qui est sauvegardé est dans la working directory (getwd()). Ce qui est logique. Mon incompréhension venait du fait que je pensais naïvement que de double-cliquer sur un fichier .RData - quelle que soit sa localisation sur le disque - lançait R en mettant à jour la working directory pour qu'elle pointe vers l'endroit où se trouve ce fichier. Erreur (grossière) de ma part.

Ce post semble résolu. Il ne me reste plus qu'à faire du ménage dans mes objets R..

Désolé pour le dérangement, mais d'avoir posé la question ici m'a été utile, au final.

Eric.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: objets et fichiers .RData

Messagepar Mickael Canouil » 11 Jan 2018, 09:39

De mon point de vue, il y a plus un problème de fond que de forme.
Je ne saurais que déconseiller l’utilisation de la sauvegarde automatique de la session et sa restauration tout aussi automatique.

Ceci est une source de problèmes, sans que ceux-ci ne soit vraiment visible par l'utilisateur.
Un exemple, si pour s'amuser nous changer la fonction unaire "+", dans la session d'un projet, avec la sauvegarde/restauration automatique, cette réaffectation sera présente à chaque fois sans même se souvenir (ou en avoir conscience) qu'elle existe.

Code : Tout sélectionner

`+` <- `-`[code]

Ainsi, dans votre cas, je vous suggère de ne pas utiliser le système par défaut de R, mais un 'R --no-save --no-restore-data'.
Dans vos scripts R de "Projets", vous pouvez effectuer une sauvegarde des gros objets ou les objets longs à générer en utilisant les fonctions "save" ou "saveRDS" ("save(list = ls(), file = 'Projet1.Rdata')" => sauvegarde la session; saveRDS => sauvegarde un objet).
Faites de même avec votre "environnement de base" contenant vos fonctions save(list = ls(), file = 'Base.Rdata').

Vous pourrez alors changer votre .First pour spécifiquement charger le 'Base.Rdata' et dans votre script Projet1, faire par exemple:
[code]if (file.exists("Projet1.Rdata")){
   load("Projet1.Rdata")
} else {}


Une autre approche serait d'exploiter le système de Projet de Rstudio par exemple.

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: objets et fichiers .RData

Messagepar Eric Wajnberg » 11 Jan 2018, 09:45

Merci,

Cependant, dans mon cas, justement, j'ai besoin de changer certaines fonctions faisant partie nativement de R (je me suis exprimé il y a des années sur ce forum sur ce point). A présent que j'ai bien compris comment (et surtout où) la création de ces fichiers .RData fonctionne, je peux gérer correctement ce qui est sauvé (ou pas) et surtout où, y compris pour les modifications et créations d'objets qui m'interessent. Tout est clair à présent.

Merci encore pour votre aide,

Cordialement,

Eric.

Eric Casellas
Messages : 767
Enregistré le : 06 Jan 2009, 14:59

Re: objets et fichiers .RData

Messagepar Eric Casellas » 11 Jan 2018, 11:22

Bonjour,

Il y a eu un post de blog récemment (https://www.tidyverse.org/articles/2017/12/workflow-vs-script/) qui aborde un peu ces aspects là...

Eric
Eric

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: objets et fichiers .RData

Messagepar Eric Wajnberg » 11 Jan 2018, 11:34

Eric Casellas a écrit :Bonjour,

Il y a eu un post de blog récemment (https://www.tidyverse.org/articles/2017/12/workflow-vs-script/) qui aborde un peu ces aspects là...

Eric

Merci. Très utile. Je note sur cette page les phrases suivantes :
Caveat: only you can decide how much you care about this. The importance of these practices has a lot to do with whether your code will be run by other people, on other machines, and in the future. If your current practices serve your purposes, then go forth and be happy.

C'est mon cas. Donc, je suis happy.

Merci encore !

Eric.

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: objets et fichiers .RData

Messagepar Eric Wajnberg » 10 Avr 2018, 08:59

Bonjour à tous,

Je décide de relancer cette discussion, car, pour une raison qui m'échappe, je continue à me battre avec cette histoire (qui est pourtant une problématique de base sous R).

Il y a une chose que je continue à ne pas comprendre. Je précise que je suis sous Windows.

Sous R, je crée des objets, et - par exemple - avant de sortir, je sauve avec save.image() mon environnent de travail (qui contient tous mes objets) à un endroit précis sur le disque. Ceci cré bien un fichier .RData.

Je sorts ensuite de R.

Si je double-click sur ce fichier créé, je rentres bien dans R, et je pensais ainsi récupérer l'ensemble des objets sauvegarder précédemment. Il n'en est rien. Je dois, dans R, envoyer une commande load() pour effectivement récupérer l'image qui me convient.

Double-clicker sur un fichier .RData ne lance pas R en chargeant l'espace de travail correspondant, ce qui est (très) contre-intuitif.

J'ai encore loupé quelque chose ? Toute aide sur ce point reste le bienvenu.

AMicalement, Eric.

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: objets et fichiers .RData

Messagepar Pierre-Yves Berrard » 10 Avr 2018, 09:40

Bonjour,

Quel interface graphique utilises-tu ? RStudio ?

Eric Wajnberg a écrit :Double-clicker sur un fichier .RData ne lance pas R en chargeant l'espace de travail correspondant, ce qui est (très) contre-intuitif.

Chez moi si (RStudio-Windows).
PY

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: objets et fichiers .RData

Messagepar Eric Wajnberg » 10 Avr 2018, 09:42

Aucune interface graphique particulière. La GUI de R natif.

Je ne vois pas d'où provient ce problème..

Eric.

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

Re: objets et fichiers .RData

Messagepar Logez Maxime » 10 Avr 2018, 11:38

Bonjour,

Est-ce que quand tu doubles cliques sur ton .Rdata, la version de R qui est ouverte est celle avec laquelle le fichier a été crée ?

Cordialement,
Maxime

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: objets et fichiers .RData

Messagepar Eric Wajnberg » 10 Avr 2018, 12:14

Je ne comprends pas la question. Je n'ai qu'une seule version de R sur ma machine.

Eric.

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

Re: objets et fichiers .RData

Messagepar Logez Maxime » 10 Avr 2018, 12:40

Je te posais la question parce que perso j'en ai plusieurs et parce que celle qui est enregistrée dans la base de registre n'est pas forcément la même que celle que utilises couramment.

Cordialement,
Maxime

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: objets et fichiers .RData

Messagepar Eric Wajnberg » 10 Avr 2018, 12:44

Je viens de revérifier. C'est bien la même (et unique) version qui est sollicitée.

C'est bizarre, il y a sûrement quelque chose qui m'échappe..

Eric.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité