Valid XHTML     Valid CSS2    

Introduction à la programmation R (exercices)

Séance de révision numéro 3

                     gilles.hunault "at" univ-angers.fr

 

Inventer la fonction cd()

On désire fournir une interface commune aux fonctions getwd(), setwd() et rchoose.dir() en utilisant une seule fonction que l'on nomme cd. Voici le comportement souhaité :

  • sans paramètre, la fonction cd() donne le chemin courant.

  • si on fournit le paramètre point d'interrogation, la fonction cd() fournit une interface pour choisir le répertoire et s'y rend.

  • si on fournit un paramètre autre que le point d'interrogation, la fonction cd() s'y rend, sauf si le chemin n'existe pas.

Donner le code-source de cette fonction cd().

Voici cela sur des exemples d'utilisation :


     
     > cd()
       le chemin courant est /home/BigData/public_html/wstat/Programmation_R/Programmation_introduction
     
     > monChemin <- cd("?")
     
       # [voir la copie d'écran ci-dessous]
       le chemin courant est /home/BigData/public_html/wstat
     
     > cd("..")
       le chemin courant est /home/BigData/public_html
     
     

               non su

Solution

Les commentaires du code-source doivent suffire comme explications :


     ############################################################
     
     cd <- function(chemin="") {
     
     ############################################################
     
     # sans paramètre, on utilise getwd()
     
     if (chemin=="") {
       chemin <- getwd()
       cat("le chemin courant est",chemin,"\n")
       return( invisible(chemin) ) # à détailler
     } # fin si
     
     # si le paramètre est "?", on utilise rchoose.dir()
     # du package rChoiceDialogs
     
     if (chemin=="?") {
       library(rChoiceDialogs)
       chemin <- rchoose.dir()
       setwd(chemin)
       cat("le chemin courant est",getwd(),"\n")
       return( invisible(chemin) )
     } # fin si
     
     # pour tout autre paramètre, on utilise setwd()
     
     setwd(chemin)
     cat("le chemin courant est",getwd(),"\n")
     return( invisible(chemin) )
     
     } # fin de fonction cd
     

 

Retour à la page principale du cours.

 

 

retour gH    Retour à la page principale de   (gH)