SlideShare une entreprise Scribd logo
1  sur  10
Gardez vos projets organisés
avec le package « project »
François Guillem
fguillem@ludostat.fr
Objectif
Un package pour arrêter de réfléchir à des
questions triviales de type :
• Où devrais-je enregistrer ce fichier ?
• A quoi il sert ce script déjà ?
• Mais elles sont où ces ?#!??# données ?
• J’ai besoin de cette fonction mais je sais plus où elle
est définie !
Objectif
Un framework minimaliste et souple pour :
• Se concentrer sur la démarche statistique
• Travailler plus efficacement
• Améliorer la lisibilité d’un projet
• Améliorer la reproductibilité d’une étude
Initialisation
Création d’un nouveau projet avec Rstudio. Puis :
library(project)
prInit()
Trois sous-dossiers créés :
— data pour les données
— scripts pour les scripts
— output pour les résultats
Initialisation
Trois scripts :
• data.R : importation dans R des données externes et
préparation pour l’analyse
• main.R : analyse des données et génération des résultats
• start.R : Instructions techniques exécutées chaque fois que le
projet est ouvert (chargement de librairies, de données,
définition de constantes, etc.)
Pour les gros projets, data.R et main.R ne
contiennent pas de code, mais une explication
de la démarche et des références aux scripts qui
font le boulot
Gestion des scripts
Créer de nouveaux scripts avec la fonction « prScript »
Des commentaires pré-remplis vous incitent à
commenter vos scripts
Convention:
• Un script qui importe et prépare des données commence par
« data »
• Un script d’analyse commence par « analysis »
• Un script à exécuter au démarrage du projet commence par
« tools »
Gestion des données
Utilisez « prSave » et « prLoad » pour
enregistrer ou charger un objet
x <- 1:10
prSave("x")
prLoad("x”)
Décrivez l’objet avec le paramètre « desc »
prSave("x", desc = "Simple vector")
prLoad("x")
# Integer vector 'x' has been loaded (saved on 2016-
05-28 10:50:10):
# Simple vector
Bonnes pratiques
• Commentez beaucoup ! (entre 30% et 50% des lignes)
• Le projet doit contenir tout ce qui est nécessaire pour
reproduire données et résultats
• Indiquez dans « data.R » toutes les opérations réalisées
en dehors de R sur les données
• Ecrivez des fonctions dans des scripts séparés pour
améliorer la lisibilité des scripts principaux
• Pour les gros projets, data.R et main.R ne contiennent
pas de code, mais une explication de la démarche et
des références aux scripts qui font le boulot
Développements futurs
Gestion des résultats:
• Fonctions prWrite.***, prPdf, prPng, etc.
• Ex : prWrite.csv("mydata") écrit le tableau « mydata »
dans « output/mydata.csv »
• Fonction prOptions pour modifier les valeurs par défaut
de ces fonctions (taille des graphiques, police, etc.)
Instructions d’installation et d’utilisation :
https://github.com/cuche27/project
N’hésitez pas à utiliser, partager et
contribuer !

Contenu connexe

Similaire à Gardez vos projets R organisés avec le package "project"

P8 03 presentation
P8 03 presentationP8 03 presentation
P8 03 presentationrajiasellami
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) univalence
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataLudovic Piot
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Laurent Guérin
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudTugdual Grall
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - ElasticsearchDavid Pilato
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...Frederic Descamps
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudriaDavid Pilato
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01MongoDB
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
Verteego Data Suite : support du lancement
Verteego Data Suite : support du lancementVerteego Data Suite : support du lancement
Verteego Data Suite : support du lancementJeremy Fain
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBruno Bonnin
 
Morning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide AcademyMorning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide AcademyOxalide
 

Similaire à Gardez vos projets R organisés avec le package "project" (20)

Une Introduction à R
Une Introduction à RUne Introduction à R
Une Introduction à R
 
P8 03 presentation
P8 03 presentationP8 03 presentation
P8 03 presentation
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - Elasticsearch
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudria
 
Catalogue PFE 2019
Catalogue PFE 2019Catalogue PFE 2019
Catalogue PFE 2019
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
Verteego Data Suite : support du lancement
Verteego Data Suite : support du lancementVerteego Data Suite : support du lancement
Verteego Data Suite : support du lancement
 
Cours 01.pptx
Cours 01.pptxCours 01.pptx
Cours 01.pptx
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
R Devtools
R DevtoolsR Devtools
R Devtools
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
 
Morning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide AcademyMorning Tech#1 BigData - Oxalide Academy
Morning Tech#1 BigData - Oxalide Academy
 

Plus de parisraddicts

Campagne presidentielle
Campagne presidentielleCampagne presidentielle
Campagne presidentielleparisraddicts
 
Introduction au package "plyr"
Introduction au package "plyr"Introduction au package "plyr"
Introduction au package "plyr"parisraddicts
 
Cartographie politique avec R
Cartographie politique avec RCartographie politique avec R
Cartographie politique avec Rparisraddicts
 
Outils cartographiques et en statistique spatiale sur R
Outils cartographiques et en statistique spatiale sur ROutils cartographiques et en statistique spatiale sur R
Outils cartographiques et en statistique spatiale sur Rparisraddicts
 
Cartographie interactive avec R
Cartographie interactive avec RCartographie interactive avec R
Cartographie interactive avec Rparisraddicts
 
Les meetups dédiés à R dans le monde
Les meetups dédiés à R dans le mondeLes meetups dédiés à R dans le monde
Les meetups dédiés à R dans le mondeparisraddicts
 
Graphiques interactifs avec R
Graphiques interactifs avec RGraphiques interactifs avec R
Graphiques interactifs avec Rparisraddicts
 
Meetup 5 - Le package manipulate
Meetup 5 - Le package manipulateMeetup 5 - Le package manipulate
Meetup 5 - Le package manipulateparisraddicts
 
Introduction à Rmpi
Introduction à RmpiIntroduction à Rmpi
Introduction à Rmpiparisraddicts
 
Prédire la progression de patients en thérapie
Prédire la progression de patients en thérapiePrédire la progression de patients en thérapie
Prédire la progression de patients en thérapieparisraddicts
 

Plus de parisraddicts (11)

Campagne presidentielle
Campagne presidentielleCampagne presidentielle
Campagne presidentielle
 
Introduction au package "plyr"
Introduction au package "plyr"Introduction au package "plyr"
Introduction au package "plyr"
 
Cartographie politique avec R
Cartographie politique avec RCartographie politique avec R
Cartographie politique avec R
 
Outils cartographiques et en statistique spatiale sur R
Outils cartographiques et en statistique spatiale sur ROutils cartographiques et en statistique spatiale sur R
Outils cartographiques et en statistique spatiale sur R
 
CaRtogRaphie avec R
CaRtogRaphie avec RCaRtogRaphie avec R
CaRtogRaphie avec R
 
Cartographie interactive avec R
Cartographie interactive avec RCartographie interactive avec R
Cartographie interactive avec R
 
Les meetups dédiés à R dans le monde
Les meetups dédiés à R dans le mondeLes meetups dédiés à R dans le monde
Les meetups dédiés à R dans le monde
 
Graphiques interactifs avec R
Graphiques interactifs avec RGraphiques interactifs avec R
Graphiques interactifs avec R
 
Meetup 5 - Le package manipulate
Meetup 5 - Le package manipulateMeetup 5 - Le package manipulate
Meetup 5 - Le package manipulate
 
Introduction à Rmpi
Introduction à RmpiIntroduction à Rmpi
Introduction à Rmpi
 
Prédire la progression de patients en thérapie
Prédire la progression de patients en thérapiePrédire la progression de patients en thérapie
Prédire la progression de patients en thérapie
 

Dernier

Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...France Travail
 
To_understand_transformers_together presentation
To_understand_transformers_together presentationTo_understand_transformers_together presentation
To_understand_transformers_together presentationbahija babzine
 
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel AttalELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attalcontact Elabe
 
Recurrent neural network_PresentationRNN.pptx
Recurrent neural network_PresentationRNN.pptxRecurrent neural network_PresentationRNN.pptx
Recurrent neural network_PresentationRNN.pptxbahija babzine
 
Bidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from TransformersBidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from Transformersbahija babzine
 
Le contrôle de la recherche d'emploi en 2023
Le contrôle de la recherche d'emploi en 2023Le contrôle de la recherche d'emploi en 2023
Le contrôle de la recherche d'emploi en 2023France Travail
 
Les Français, l'Europe et Emmanuel Macron
Les Français, l'Europe et Emmanuel MacronLes Français, l'Europe et Emmanuel Macron
Les Français, l'Europe et Emmanuel Macroncontact Elabe
 

Dernier (7)

Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
 
To_understand_transformers_together presentation
To_understand_transformers_together presentationTo_understand_transformers_together presentation
To_understand_transformers_together presentation
 
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel AttalELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
 
Recurrent neural network_PresentationRNN.pptx
Recurrent neural network_PresentationRNN.pptxRecurrent neural network_PresentationRNN.pptx
Recurrent neural network_PresentationRNN.pptx
 
Bidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from TransformersBidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from Transformers
 
Le contrôle de la recherche d'emploi en 2023
Le contrôle de la recherche d'emploi en 2023Le contrôle de la recherche d'emploi en 2023
Le contrôle de la recherche d'emploi en 2023
 
Les Français, l'Europe et Emmanuel Macron
Les Français, l'Europe et Emmanuel MacronLes Français, l'Europe et Emmanuel Macron
Les Français, l'Europe et Emmanuel Macron
 

Gardez vos projets R organisés avec le package "project"

  • 1. Gardez vos projets organisés avec le package « project » François Guillem fguillem@ludostat.fr
  • 2. Objectif Un package pour arrêter de réfléchir à des questions triviales de type : • Où devrais-je enregistrer ce fichier ? • A quoi il sert ce script déjà ? • Mais elles sont où ces ?#!??# données ? • J’ai besoin de cette fonction mais je sais plus où elle est définie !
  • 3. Objectif Un framework minimaliste et souple pour : • Se concentrer sur la démarche statistique • Travailler plus efficacement • Améliorer la lisibilité d’un projet • Améliorer la reproductibilité d’une étude
  • 4. Initialisation Création d’un nouveau projet avec Rstudio. Puis : library(project) prInit() Trois sous-dossiers créés : — data pour les données — scripts pour les scripts — output pour les résultats
  • 5. Initialisation Trois scripts : • data.R : importation dans R des données externes et préparation pour l’analyse • main.R : analyse des données et génération des résultats • start.R : Instructions techniques exécutées chaque fois que le projet est ouvert (chargement de librairies, de données, définition de constantes, etc.) Pour les gros projets, data.R et main.R ne contiennent pas de code, mais une explication de la démarche et des références aux scripts qui font le boulot
  • 6. Gestion des scripts Créer de nouveaux scripts avec la fonction « prScript » Des commentaires pré-remplis vous incitent à commenter vos scripts Convention: • Un script qui importe et prépare des données commence par « data » • Un script d’analyse commence par « analysis » • Un script à exécuter au démarrage du projet commence par « tools »
  • 7. Gestion des données Utilisez « prSave » et « prLoad » pour enregistrer ou charger un objet x <- 1:10 prSave("x") prLoad("x”) Décrivez l’objet avec le paramètre « desc » prSave("x", desc = "Simple vector") prLoad("x") # Integer vector 'x' has been loaded (saved on 2016- 05-28 10:50:10): # Simple vector
  • 8. Bonnes pratiques • Commentez beaucoup ! (entre 30% et 50% des lignes) • Le projet doit contenir tout ce qui est nécessaire pour reproduire données et résultats • Indiquez dans « data.R » toutes les opérations réalisées en dehors de R sur les données • Ecrivez des fonctions dans des scripts séparés pour améliorer la lisibilité des scripts principaux • Pour les gros projets, data.R et main.R ne contiennent pas de code, mais une explication de la démarche et des références aux scripts qui font le boulot
  • 9. Développements futurs Gestion des résultats: • Fonctions prWrite.***, prPdf, prPng, etc. • Ex : prWrite.csv("mydata") écrit le tableau « mydata » dans « output/mydata.csv » • Fonction prOptions pour modifier les valeurs par défaut de ces fonctions (taille des graphiques, police, etc.)
  • 10. Instructions d’installation et d’utilisation : https://github.com/cuche27/project N’hésitez pas à utiliser, partager et contribuer !