Listing du fichier tp3.php
00001<?php
00002 # # (gH) -_- tp3.php ; TimeStamp (unix) : 14 Novembre 2019 vers 18:17
00003 error_reporting(E_ALL | E_NOTICE | E_STRICT ) ;
00004 header('Content-Type "text/html; charset=iso-8859-1"') ;
00005 ini_set( 'default_charset', 'ISO-8859-1' );
00006 include("decra-inc.php") ;
00007
00008 $numSerie = 3 ;
00009 debutTP($numSerie,"Programmation en R") ;
00010 ghAtAngers() ;
00011
00012 $R = ghRouge("R") ;
00013 $XML = ghRouge("XML") ;
00014 $Awk = ghRouge("AWK") ;
00015 $Php = ghVert("PHP") ;
00016
00017 ## -------------------------------------------------------------------------------------------
00018
00019 sdl(3) ; echo cmt(' pour afficher toutes les solutions : tp1.php?solutions=1') ; sdl(3) ;
00020
00021 ## -------------------------------------------------------------------------------------------
00022
00023 p("texte") ;
00024 echo "" ;
00025 finp() ;
00026 debutSection() ;
00027
00028 $tableauDesRubriques = array() ;
00029 $idr = 0 ;
00030 $idr++; $tableauDesRubriques[$idr] = "Tuteur $R, Rstudio et Jupyter notebook" ;
00031 $idr++; $tableauDesRubriques[$idr] = "Exercices simples d'entrainement pour \"snobber\" Excel" ;
00032 $idr++; $tableauDesRubriques[$idr] = "Calcul de co-occurrences en ligne de commandes" ;
00033 $idr++; $tableauDesRubriques[$idr] = "Programmation et développement en $R" ;
00034
00035 $tdmCRLM = new tdm($tableauDesRubriques) ;
00036 $tdmCRLM->titre() ;
00037 $tdmCRLM->menu("oui","oui","nou") ;
00038
00039 direAfficherSolutionsTP($numSerie) ;
00040
00041 finSection() ;
00042
00043 $numExo = 0 ;
00044
00045 ## -------------------------------------------------------------------------------------------
00046
00047 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Tuteur R et Jupyter notebook
00048
00049 ## -------------------------------------------------------------------------------------------
00050
00051 blockquote() ; # tp
00052
00053 blockquote() ; # énoncé
00054
00055 $sous = 0 ;
00056
00057 $sous++ ; h3("Partie 1.".$sous) ;
00058
00059 p("texte") ;
00060 $tutr = "../wstat/Programmation_R/Programmation_introduction/tutrprog.php" ;
00061 echo " Commencer par relire le ".href($tutr,"tuteur de programmation $R").". " ;
00062 finp() ;
00063
00064 p("texte") ;
00065 $rwarm = "../wstat/R-warmup/" ;
00066 echo " Pour les plus courageuses et les plus courageux, essayer de répondre aux dix exercices de la section " ;
00067 echo b("1. I don't know $R")." ";
00068 echo " de la ".href($rwarm,"$R «warm-up session»").". " ;
00069 echo " Où sont les solutions ?" ;
00070 finp() ;
00071
00072 $sous++ ; h3("Partie 1.".$sous) ;
00073
00074 p("texte") ;
00075 echo " Reproduire ensuite le tableau des puissances inférieures ou égales à 1 million. On nommera ".b("boucle.r") ;
00076 echo " le fichier correspondant qu'on exécutera d'abord dans Rstudio. Comment exporter le résultat pour obtenir le fichier " ;
00077 echo href("boucle.txt")." suivant :" ;
00078 finp() ;
00079
00080 pre_fichier("boucle.txt","cadre") ;
00081
00082 p("texte") ;
00083 echo " Serait-ce plus simple à exécuter et à exporter dans un terminal ?" ;
00084 finp() ;
00085
00086 p("texte") ;
00087 echo " Serait-ce plus simple à exécuter et à exporter via un Jupyter Notebook ?" ;
00088 echo " Pour mémoire, dans les salles du département informatique, " ;
00089 echo " il faut, dans un terminal lancer la commande ".b("_jupyter_notebook")." c'est-à-dire ".ghBleu("jupyter_notebook")." précédé du souligné ".ghBleu("_") ;
00090 echo " pour pouvoir utiliser un serveur local de notebooks. Le disque ".b("D")." et le répertoire ".b("Mes_notebooks")." permettent alors " ;
00091 echo " d'enregistrer les fichiers." ;
00092 finp() ;
00093
00094 $sous++ ; h3("Partie 1.".$sous) ;
00095
00096 p("texte") ;
00097 echo " Reproduire ensuite les calculs liés à ".b("microbenchmark( a <- runif(n), b <- rnorm(n) )")." puis ceux " ;
00098 echo " liés à l'optimisation de ".b("sum(v==maxv)")." et de ".b("which(v==maxv)").". " ;
00099 echo " Est-ce normal d'avoir des résultats différents du tuteur ?" ;
00100 finp() ;
00101
00102 $sous++ ; h3("Partie 1.".$sous) ;
00103
00104 p("texte") ;
00105 echo "Télécharger puis compléter le Jupyter Notebook nommé ".href("../Notebooks/introduction-a-R.ipynb","introduction-a-R")."." ;
00106 finp() ;
00107
00108 pre_fichier("jupyter_R.txt","cadrebleu") ;
00109
00110 finblockquote() ; # énoncé
00111
00112 solutionTP($numExo,$numSerie) ;
00113
00114 p("texte") ;
00115 echo "Il n'y a aucune question pour ".ghvert("la partie 1.1")."." ;
00116 finp() ;
00117
00118 $rwarm = "../wstat/R-warmup/" ;
00119 echo " Les solutions de la ".href($rwarm,"$R «warm-up session»")." " ;
00120 echo " sont cachées sous le bouton bleu nommé ".href("../wstat/R-warmup/answers.txt","play","gbleu")." tout en bas de la page, ce qui " ;
00121 echo " correspond au fichier ".href("../wstat/R-warmup/answers.txt","answers.txt").". " ;
00122 echo " On peut alors exécuter chacune des instructions données en solution." ;
00123
00124 p("texte") ;
00125 echo "Au niveau de ".ghvert("la partie 1.2").", il faut commencer par écrire le code $R nommé ".href("boucle.r")." suivant " ;
00126 finp() ;
00127
00128 pre_fichier("boucle.r","cadrebleu") ;
00129
00130 p("texte") ;
00131 echo " Sous Rstudio, on peut copier/coller ou exporter les lignes affichées, mais ce n'est pas très professionnel. " ;
00132 echo " Il est préférable de passer par le couple " ;
00133 echo href("http://finzi.psych.upenn.edu/R/library/base/html/sink.html","sink") ;
00134 echo "/" ;
00135 echo href("http://finzi.psych.upenn.edu/R/library/base/html/sink.html","source") ;
00136 echo " comme suit :" ;
00137 finp() ;
00138
00139 pre_fichier("boucle2.r","cadrebleu") ;
00140
00141 p("texte") ;
00142 echo " Par contre en ligne de commandes, une simple redirection de la sortie suffit " ;
00143 finp() ;
00144
00145 pre_fichier("boucle3.txt","cadrejaune") ;
00146
00147 p("texte") ;
00148 echo " Il n'est pas plus simple d'utiliser un Jupyter notebook ici." ;
00149 finp() ;
00150
00151 p("texte") ;
00152 echo "Si, pour la partie ".ghvert("la partie 1.3").", on écrit le code $R nommé ".href("performance.r")." suivant " ;
00153 finp() ;
00154
00155 pre_fichier("performance.r","cadrebleu") ;
00156
00157 p("texte") ;
00158 echo " il y a de fortes chances pour qu'il ne fonctionne pas, parce qu'il faut d'abord installer le package " ;
00159 echo href("https://cran.r-project.org/web/packages/microbenchmark/index.html","microbenchmark").". " ;
00160 echo " Là, le plus simple est certainement de passer par Rstudio, via l'onglet ".b("Package")." du panneau en bas et à droite : " ;
00161 echo " on clique sur le sous-onglet ".b("Install").", on met le mot ".b("microbenchmark")." dans la zone de saisie texte et " ;
00162 echo " il suffit de cliquer sur le bouton ".b("Install")." pour disposer du package. Notre script s'exécute alors correctement. " ;
00163 finp() ;
00164
00165 p("texte") ;
00166 echo "Voici le résultat de son exécution (au bout d'environ 10 secondes en moyenne sur nos ordinateurs) :" ;
00167 finp() ;
00168
00169 pre_fichier("performance.txt","cadrejaune") ;
00170
00171 p("texte") ;
00172 echo " Il est normal qu'on n'ait pas exactement les mêmes résultats que dans le tuteur parce qu'on utilise des valeurs aléatoires " ;
00173 echo " et parce que l'exécution du code dépend de l'état de la machine..." ;
00174 finp() ;
00175
00176 p("texte") ;
00177 echo ghvert("Partie 1.4")." : le code complet associé au " ;
00178 echo " Jupyter notebook nommé ".href("../Notebooks/introduction-a-R.ipynb","introduction-a-R")." se nomme " ;
00179 echo " ".href("../Notebooks/introduction-a-R-solution.ipynb","introduction-a-R-solution").". " ;
00180 echo " A lire sans modération !" ;
00181 finp() ;
00182
00183 finsolution() ; # contient un blockquote
00184
00185 finblockquote() ; # tp
00186
00187 ## -------------------------------------------------------------------------------------------
00188
00189 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Exercices simples d'entrainement
00190
00191 ## -------------------------------------------------------------------------------------------
00192
00193 blockquote() ; # tp
00194
00195 blockquote() ; # énoncé
00196
00197 $sous = 0 ;
00198
00199 $sous++ ; h3("Partie 2.".$sous) ;
00200
00201 p("texte") ;
00202 echo " Ecrire un script R nommé ".b("extraitFichierExcel.r")." qui affiche les cinq premières lignes et les cinq dernières lignes " ;
00203 echo " d'un fichier Excel dont le nom est passé en paramètre, par exemple le fichier " ;
00204 echo href("iris.xlsx").". " ;
00205 echo " Exemple de fonctionnement :" ;
00206 finp() ;
00207
00208 pre_fichier("extraitiris.txt","cadre") ;
00209
00210 $sous++ ; h3("Partie 2.".$sous) ;
00211
00212 p("texte") ;
00213 echo " Ecrire un script bash et une fonction R nommés tous deux ".b("decritFichierExcel")." qui utilisent un paramètre nommé ".b("fichierExcel") ;
00214 echo " avec le comportement suivant :" ;
00215 finp() ;
00216
00217 ul() ;
00218
00219 debutli() ; p() ;
00220 echo "s'il n'y a pas de paramètre, on fournit un rappel de la syntaxe et un exemple puis on s'arrête." ;
00221 finp() ; finli() ;
00222
00223 debutli() ; p() ;
00224 echo "si le fichier Excel désigné par le paramètre n'est pas présent, on l'indique et on s'arrête." ;
00225 finp() ; finli() ;
00226
00227 debutli() ; p() ;
00228 echo "si le fichier est présent, on liste les colonnes présentes avec leur numéro et leur nom sous Excel (A pour 1, B pour 2...)." ;
00229 finp() ; finli() ;
00230
00231 debutli() ; p() ;
00232 echo " on utlisera un ".b("try/catch")." pour garantir que la lecture des données s'est bien passée." ;
00233 finp() ; finli() ;
00234
00235 finul() ;
00236
00237 p("texte") ;
00238 echo "Pour les expert(e)s, on pourra de plus fournir le type des colonnes, la valeur minimale, la valeur maximale et le nombre de valeurs manquantes," ;
00239 echo " comme ci-dessous, pour le fichier ".href("iris.xlsx")." :" ;
00240 finp() ;
00241
00242 pre_fichier("decritiris.txt","cadre") ;
00243
00244 $sous++ ; h3("Partie 2.".$sous) ;
00245
00246 p("texte") ;
00247 echo " Dès qu'on dépasse plusieurs centaines de lignes dans un fichier Excel, il est difficile d'écrire et de recopier des formules. " ;
00248 echo " Par exemple, pour le fichier ".href("iris.xlsx").", il est un peu fastidieux de " ;
00249 echo " créer une colonne ".b("grandesPetales")." avec la valeur 0 si ".b("largpet")." est strictement inférieure à 2 et égale à 1 ailleurs. " ;
00250 echo " Avec $R, c'est un jeu d'enfants. La preuve ? Ecrivez le script correspondant... On nommera ".b("irisG.xlsx") ;
00251 echo " le fichier Excel résultat." ;
00252 finp() ;
00253
00254 p("texte") ;
00255 echo " Voici ce qu'on devrait obtenir :" ;
00256 finp() ;
00257
00258 pre_fichier("irisg.txt","cadre") ;
00259
00260 finblockquote() ; # énoncé
00261
00262 solutionTP($numExo,$numSerie) ; # contient un blockquote
00263
00264 p("texte") ;
00265 echo " Facile, c'est du $R !" ;
00266 finp() ;
00267
00268 p("texte") ;
00269 echo "Pour ".ghvert("la partie 2.1").", sans aucune vérification du paramètre, on peut se contenter du code ".href("extraitFichierExcel.r")." suivant :" ;
00270 finp() ;
00271
00272 pre_fichier("extraitFichierExcel.r","cadrebleu") ;
00273
00274 p("texte") ;
00275 echo " Pour ".ghVert("la partie 2.2").", il faut écrire un fichier script et un fichier $R. " ;
00276 echo " Nous choisissons ici d'utiliser une syntaxe ".b("longue")." d'appel de $R. C'est $R qui gère le paramètre..." ;
00277 finp() ;
00278
00279
00280 p("texte") ;
00281 echo "Code du fichier ".href("decritFichierExcel")." rendu exécutable sous Linux via ".b("chmod +x")." :" ;
00282 finp() ;
00283
00284 pre_fichier("decritFichierExcel","cadrejaune") ;
00285
00286 p("texte") ;
00287 echo "Code du fichier $R nommé ".href("decritFichierExcel.r")." :" ;
00288 finp() ;
00289
00290 pre_fichier("decritFichierExcel.r","cadrebleu") ;
00291
00292 p("texte") ;
00293 echo "Vérification du fonctionnement :" ;
00294 finp() ;
00295
00296 pre_fichier("decritFichierExcel.txt","cadre") ;
00297
00298 p("texte") ;
00299 echo " Le code du fichier inclus $R nommé ".href("decritFichierExcel-inc.r")." est listé ci-dessous :" ;
00300 finp() ;
00301
00302 pre_fichier("decritFichierExcel-inc.r","cadrebleu") ;
00303
00304 p("texte") ;
00305 echo "Pour ".ghVert("la partie 2.3")." on peut se contenter du fichier ".href("irisg.r")." suivant :" ;
00306 finp() ;
00307
00308 pre_fichier("irisg.r","cadrebleu") ;
00309
00310 finsolution() ; # contient un blockquote
00311
00312 finblockquote() ; # tp
00313
00314 ## -------------------------------------------------------------------------------------------
00315
00316 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Calcul de co-occurrences en ligne de commandes
00317
00318 ## -------------------------------------------------------------------------------------------
00319
00320 blockquote() ; # tp
00321
00322 blockquote() ; # énoncé
00323
00324 p("texte") ;
00325 echo "On s'intéresse ici à la production d'un tableau dit \"tri croisé amélioré\" qui comptabilise les croisements de deux variables qualitatives " ;
00326 echo " avec des marges correspondant aux pourcentages globaux. " ;
00327 finp() ;
00328
00329 p("texte") ;
00330 echo " Justifier rapidement que $R est un langage adapté à ce problème." ;
00331 finp() ;
00332
00333 p("texte") ;
00334 echo "Voici un exemple de fichier de données nommé ".href("elf1.txt")." :" ;
00335 finp() ;
00336
00337 p() ;
00338 textarea_fichier("elf1","cadrebleu",8,45,"elf1","elf1.txt") ;
00339 finp() ;
00340
00341 p("texte") ;
00342 echo "Et le fichier de résultats recherché ".href("elf2.txt")." sachant qu'on s'intéresse aux champs SEXE et ETUD :" ;
00343 finp() ;
00344
00345 pre_fichier("elf2.txt","cadrejaune") ;
00346
00347 p("texte") ;
00348 echo "On trouvera la description des données à l'adresse ".href("../Datasets/elf.htm","ELF")."." ;
00349 finp() ;
00350
00351 p("texte") ;
00352 echo "On essaiera de produire une solution qui fonctionne quelque soit le tableau de données en entrée. " ;
00353 echo " Pour les plus fort(e)s, on produira aussi les histogrammes de fréquences associés, à savoir :" ;
00354 finp() ;
00355
00356 p() ;
00357 nbsp(15) ;
00358 $img = "sexeEtudes.png" ;
00359 echo href($img,img($img,"",400)) ;
00360 finp() ;
00361
00362 p("texte") ;
00363 echo " On réfléchira aux extensions et généralisations possibles. Nous fournissons à ce titre, deux fichiers de configuration possibles, " ;
00364 echo " nommés ".href("elf2Data.xml")." et ".href("autreCfg.xml").". " ;
00365 finp() ;
00366
00367 p() ;
00368 echo b("Fichier ".href("elf2Data.xml")) ;
00369 finp() ;
00370
00371 pre_fichier("elf2Data.xml","cadrebleu") ;
00372
00373 p() ;
00374 echo b("Fichier ".href("autreCfg.xml")) ;
00375 finp() ;
00376
00377 pre_fichier("autreCfg.xml","cadrebleu") ;
00378
00379 p("texte") ;
00380 echo ghRouge("Remarque :") ;
00381 echo " Pour éviter de perdre du temps, on rapatriera en local les fichiers-texte des noms et prénoms via ".b("wget").". " ;
00382 finp() ;
00383
00384 p("texte") ;
00385 echo " Pour utiliser $R dans une \"bonne configuration\" dans les locaux du département informatique, " ;
00386 echo " vous pouvez utiliser les commandes ".b("R").", ".b("Rscript")." et ".b("rstudio &").". " ;
00387 echo " Le package ".ghBleu("XML")." est le plus adapté pour traiter les fichiers $XML. Le plus simple est de l'installer " ;
00388 echo em("via")." ".ghBleu("Rstudio").". Il est alors aussi disponible pour une utilisation de $R en ligne de commandes." ;
00389 finp() ;
00390
00391 finblockquote() ; # énoncé
00392
00393 solutionTP($numExo,$numSerie) ; # contient un blockquote
00394
00395 p("texte") ;
00396 echo "Il n'est sans doute pas difficile de comprendre ce qu'il faut calculer et tracer. " ;
00397 echo " Par contre, savoir quel langage utiliser pour résoudre simplement et rapidement ce problème " ;
00398 echo " (il s'agit d'une petite application) n'est pas si simple car calculer des sommes et des pourcentages " ;
00399 echo " est à la portée de tout langage de scripts. " ;
00400 echo "À nos yeux, un choix raisonnable semble être " ;
00401 echo " celui du langage $R car il comporte pour chaque action à exécuter dans ces calculs et mises en forme une fonction " ;
00402 echo " prête à l'emploi. Comme ce n'est pas simple, il faut penser à écrire un plan de développement, comme par exemple " ;
00403 echo " celui défini dans ".href("tp3exo3.php")."." ;
00404 finp() ;
00405
00406 p("texte") ;
00407 echo "Voici donc une version minimale nommée ".href("co-occur1.r")." qui traite uniquement l'exemple proposé :" ;
00408 finp() ;
00409
00410 pre_fichier("co-occur1.r","cadrejaune") ;
00411
00412 p("texte") ;
00413 echo "Quelques commentaires s'imposent, pour une bonne compréhension du script :" ;
00414 finp() ;
00415
00416 ul() ;
00417
00418 debutli() ; p("texte") ;
00419 echo "La lecture des données est assurée par " ;
00420 echo " la fonction ".hrrr("read.table","utils","","gvert nou")." du package ".hrrp("utils") ;
00421 echo " ;" ;
00422 echo " le paramètre ".b("header")." indique que la ligne 1 du fichier ne contient pas des données, mais le nom des colonnes." ;
00423 finp() ; finli() ;
00424
00425 debutli() ; p("texte") ;
00426 echo " La fonction ".hrrr("factor","base","","gvert nou")." du package ".hrrp("base") ;
00427 echo " permet de convertir une colonne de données numériques (qui sont des numéros de modalités) en une «vraie» " ;
00428 echo " ".href("https://fr.wikipedia.org/wiki/Variable_cat%C3%A9gorielle","variable qualitative")." ou ".b("facteur") ;
00429 echo " dans la terminologie de $R." ;
00430 finp() ; finli() ;
00431
00432 debutli() ; p("texte") ;
00433 echo " La fonction ".hrrr("table","base","","gvert nou")." du package ".hrrp("base") ;
00434 echo " permet de compter le nombre d'occurrences de chaque modalité " ;
00435 echo " («".href("../wstat/Introduction_R/intror4.php?solutions=0#tdm4","tri à plat")."») " ;
00436 echo " pour un seul paramètre et le nombre d'occurrences de chaque couple de modalités " ;
00437 echo " («".href("http://www.statsoft.fr/concepts-statistiques/statistiques-elementaires/tris-croises.php","tri croisé")."») " ;
00438 echo " pour deux paramètres. " ;
00439 finp() ; finli() ;
00440
00441 debutli() ; p("texte") ;
00442 echo " Pour calculer les pourcentages associés, on passe par " ;
00443 echo " la fonction ".hrrr("prop.table","base","","gvert nou").", toujours dans le package ".hrrp("base").". " ;
00444 finp() ; finli() ;
00445
00446 debutli() ; p("texte") ;
00447 echo " Grâce à la fonction ".hrrr("paste","base","","gvert nou")." on adjoint le symbole ".ghVert("%")." à ces pourcentages " ;
00448 echo " et on les ajoute respectivement en ligne et en colonne via " ;
00449 echo " les fonctions ".hrrr("cbind","base","rbind()","gvert nou") ;
00450 echo " et " ;
00451 echo " ".hrrr("cbind","base","","gvert nou").". " ;
00452 finp() ; finli() ;
00453
00454 debutli() ; p("texte") ;
00455 echo " Il ne reste plus qu'à mettre les bons noms de lignes et de colonnes respectivement via " ;
00456 echo " les fonctions ".hrrr("row.names","base","","gvert nou") ;
00457 echo " et " ;
00458 echo " ".hrrr("colnames","base","","gvert nou")." avant " ;
00459 echo " d'afficher via la fonction générique " ;
00460 echo " ".hrrr("print","base","","gvert nou")." " ;
00461 echo " sans montrer les guillemets à l'aide du paramètre ".b("quote") ;
00462 echo " car $R a converti au passage tout le tableau en chaines de caractères." ;
00463 finp() ; finli() ;
00464
00465 finul() ;
00466
00467 p("texte") ;
00468 echo "Si l'on veut généraliser ce script, la partie facile consiste à rajouter un paramètre correspondant " ;
00469 echo " au nom du fichier à traiter. Une partie plus délicate concerne le nom des deux variables, les valeurs numériques " ;
00470 echo " et les labels de leurs modalités. Comme cela peut faire beaucoup d'informations à gérer, le mieux est sans doute de " ;
00471 echo " mettre ces informations dans un fichiers structuré, disons au format $XML ou ".ghBleu("JSON").". " ;
00472 finp() ;
00473
00474 p("texte") ;
00475 echo "Comme la partie $XML est la plus délicate, nous allons commencer par simuler cette partie $XML et généraliser tout le reste, " ;
00476 echo " en testant tout ce qui doit l'être, comme l'existence des fichiers, des variables. " ;
00477 echo " Voici ce que cela donne dans le fichier ".href("co-occur2.r")." qui utilise un autre fichier de données nommé ".href("elf2Data.txt")." :" ;
00478 finp() ;
00479
00480 p("texte") ;
00481 echo b("Fichier ").href("elf2Data.txt")." :" ;
00482 finp() ;
00483
00484 pre_fichier("elf2Data.txt","cadre") ;
00485
00486 p("texte") ;
00487 echo "On passe donc à une deuxième version, où les instructions précédentes deviennent une fonction " ;
00488 echo " et où des tests garantissent un code ".b("robuste").". " ;
00489 finp() ;
00490
00491 p("texte") ;
00492 echo b("Fichier ").href("co-occur2.r")." :" ;
00493 finp() ;
00494
00495 pre_fichier("co-occur2.r","cadrejaune") ;
00496
00497 p("texte") ;
00498 echo "Pour parachever le script, il reste à traiter le fichier $XML de configuration." ;
00499 echo " Voici tout d'abord un exemple de fichier $XML à traiter, nommé ".href("autreCfg.xml")." :" ;
00500 finp() ;
00501
00502 pre_fichier("autreCfg.xml","cadrebleu") ;
00503
00504 p("texte") ;
00505 echo "Le détail des actions à effectuer sur le fichier $XML de configuration est détaillé ci-dessous :" ;
00506 finp() ;
00507
00508 ul() ;
00509
00510 debutli() ; p("texte") ;
00511 echo " il faut charger le fichier $XML de configuration en mémoire, " ;
00512 echo " ce qui se fait via la fonction ".hrrr("xmlTreeParse","XML","xmlParse()","gvert nou")." qui est dans le package ".hrrp("XML")."." ;
00513 finp() ; finli() ;
00514
00515 debutli() ; p("texte") ;
00516 echo " on récupère les informations recherchées (nom de variable, numéros et labels de modalités) " ;
00517 echo " à l'aide de la fonction ".hrrr("getNodeSet","XML","","gvert nou")." du package ".hrrp("XML")." " ;
00518 echo " en utilisant de simples expressions ".ghRouge("XPATH")." ; " ;
00519 echo " le troisième paramètre indique ce qu'on veut faire de la donnée : pour les numéros de modalité, on " ;
00520 echo " veut convertir en nombre entier." ;
00521 finp() ; finli() ;
00522
00523 debutli() ; p("texte") ;
00524 echo " comme $R renvoie des listes, on convertit en vecteur " ;
00525 echo " grâce à la fonction ".hrrr("unlist","base","","gvert nou")." du package ".hrrp("base")." " ;
00526 finp() ; finli() ;
00527
00528 finul() ;
00529
00530 p("texte") ;
00531 echo "Voici un script plus complet avec prise en compte de $XML dans le fichier ".href("co-occur3.r")." :" ;
00532 finp() ;
00533
00534 pre_fichier("co-occur3.r","cadrejaune") ;
00535
00536 p("texte") ;
00537 echo "On finit par faire un script complet avec test des paramètres, le code est dans le fichier ".href("co-occur4.r") ;
00538 echo " sachant que la fonction est définie dans le fichier ".href("co-occur.r")." :" ;
00539 finp() ;
00540
00541 pre_fichier("co-occur4.r","cadrejaune") ;
00542
00543 p("texte") ;
00544 echo "Il est assez simple de tester les cinq cas d'erreur possibles prévus et un bon cas d'exécution :" ;
00545 finp() ;
00546
00547 pre_fichier("co-occur4_err.txt","cadre") ;
00548
00549 p("texte") ;
00550 echo " Pour les graphiques à produire, à savoir des histogrammes de fréquences (et non pas des histogrammes de classes), " ;
00551 echo " on pourra s'inspirer de notre " ;
00552 echo href("http://forge.info.univ-angers.fr/~gh/wstat/Introduction_R/","introduction à $R").", " ;
00553 echo href("http://forge.info.univ-angers.fr/~gh/wstat/Introduction_R/intror3.php?solutions=0","séance 3").", " ;
00554 echo href("http://forge.info.univ-angers.fr/~gh/wstat/Introduction_R/intror3.php?solutions=1#tdm5","exercice 5",". ") ;
00555 finp() ;
00556
00557 finsolution() ; # contient un blockquote
00558
00559 finblockquote() ; # tp
00560
00561 ## -------------------------------------------------------------------------------------------
00562
00563 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # programmation et développement
00564
00565 ## -------------------------------------------------------------------------------------------
00566
00567 blockquote() ; # tp
00568
00569 blockquote() ; # énoncé
00570
00571 p("texte") ;
00572 echo " Comment fait-on du profilage, du déboggage en $R ? " ;
00573 echo " Comment écrire des tests, des packages en $R ? " ;
00574 echo " Faut-il passer au tidyverse ? " ;
00575 finp() ;
00576
00577 p("texte") ;
00578 echo " Pour répondre à ces questions, vous essaierez de " ;
00579 echo " réaliser la page d'exercices nommée " ;
00580 echo href("../wstat/Programmation_R/Programmation_introduction/progie9.php","progie9").". " ;
00581 finp() ;
00582
00583 finblockquote() ; # énoncé
00584
00585 solutionTP($numExo,$numSerie) ; # contient un blockquote
00586
00587 p("texte") ;
00588 echo " La page " ;
00589 echo href("../wstat/Programmation_R/Programmation_introduction/progie9.php","progie9")." " ;
00590 echo" contient les solutions, on peut y accéder directement via l'URL " ;
00591 echo href("../wstat/Programmation_R/Programmation_introduction/progie9.php?solutions=1","progie9 solutions")." " ;
00592 finp() ;
00593
00594 finsolution() ; # contient un blockquote
00595
00596 finblockquote() ; # tp
00597
00598 #############################################################################
00599
00600 finTP($numSerie) ;
00601 ?>
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)