Listing du fichier perf4.php
00001 <?php
00002 # # (gH) -_- perf4.php ; TimeStamp (unix) : 19 Août 2014 vers 17:20
00003
00004 error_reporting(E_ALL | E_NOTICE | E_STRICT) ;
00005
00006 include_once("std7.php") ;
00007 include_once("perf_inc.php") ;
00008 include_once("../../statuno7.php") ;
00009
00010 $R = s_span("R","gbleuf") ;
00011
00012 $numSerie = 4 ;
00013 debutPageExoScr1($numSerie) ;
00014
00015 ## -------------------------------------------------------------------------------------------
00016
00017 sdl(3) ; echo cmt(' pour afficher toutes les solutions : intror1.php?solutions=1') ; sdl(3) ;
00018
00019 ## -------------------------------------------------------------------------------------------
00020
00021 p("texte") ;
00022 echo "" ;
00023 finp() ;
00024 debutSection() ;
00025
00026 $tableauDesRubriques = array() ;
00027 $idr = 0 ;
00028 #$idr++; $tableauDesRubriques[$idr] = "Que peut-on et que doit-on automatiser avec R ?" ;
00029 $idr++; $tableauDesRubriques[$idr] = "Notion de script $R" ; # , gestion des entrées et sorties avec $R" ;
00030 $idr++; $tableauDesRubriques[$idr] = "Définition des fonctions en $R" ;
00031 $idr++; $tableauDesRubriques[$idr] = "Interaction utilisateur et gestion de liste de fichiers" ;
00032 #$idr++; $tableauDesRubriques[$idr] = "Initiation simpliste à la programmation en $R" ;
00033 $idr++; $tableauDesRubriques[$idr] = "Références bibliographiques pour l'ensemble des séances" ;
00034 $tdmCRLM = new tdm($tableauDesRubriques) ;
00035 $tdmCRLM->titre() ;
00036 $tdmCRLM->menu("oui","oui","nou") ;
00037
00038 pvide() ;
00039
00040 p() ;
00041 echo "Il est possible d'afficher toutes les solutions via ".href("perf4.php?solutions=1","?solutions=1","bouton_fin jaune_pastel nou")." " ;
00042 echo " et de toutes les masquer avec via ".href("perf4.php?solutions=0","?solutions=0","bouton_fin orange_pastel nou").". " ;
00043 finp() ;
00044
00045 finSection() ;
00046
00047 debutSection() ;
00048 $numExo = 0 ;
00049 /*
00050 ## -------------------------------------------------------------------------------------------
00051
00052 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Que peut-on et que doit-on automatiser avec R ?
00053
00054 ## -------------------------------------------------------------------------------------------
00055
00056 blockquote() ;
00057
00058 blockquote() ;
00059
00060 p("texte") ;
00061 echo "" ;
00062 finp() ;
00063
00064 finblockquote() ;
00065
00066 solution($numExo,$numSerie) ;
00067
00068 p("texte") ;
00069 echo "" ;
00070 finp() ;
00071
00072 finsolution() ;
00073
00074 finblockquote() ;
00075
00076 */
00077 ## -------------------------------------------------------------------------------------------
00078
00079 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Notion de script, gestion des entrées et sorties avec R
00080
00081
00082 ## -------------------------------------------------------------------------------------------
00083
00084 blockquote() ;
00085
00086 blockquote() ;
00087
00088 p("texte") ;
00089 echo "Qu'est-ce qu'un script $R ?" ;
00090 echo " Est-ce forcément un programme ?" ;
00091 echo " Est-ce forcément une fonction ?" ;
00092 finp() ;
00093
00094 p("texte") ;
00095 echo "Commenter le script suivant :" ;
00096 finp() ;
00097
00098 pre_fichier("unscript.r","cadre") ;
00099
00100 p("texte") ;
00101 echo "Est-ce un ".b('"bon"')." script ?" ;
00102 echo " Comment l'améliorer ?" ;
00103 echo " Peut-on en faire une fonction ?" ;
00104 echo " Quels en seraient les paramètres ?" ;
00105 finp() ;
00106
00107 finblockquote() ;
00108
00109 solution($numExo,$numSerie) ;
00110
00111 p("texte") ;
00112 echo "Un script est en quelque sorte un programme puisque c'est un ensemble d'instructions que $R exécute dans l'ordre des lignes. " ;
00113 echo " Ce n'est pas forcément une fonction, mais cela peut contenir des définitions et des appels de fonctions. " ;
00114 echo " Le script proposé ne définit aucune fonction. " ;
00115 finp() ;
00116
00117 p("texte") ;
00118 echo "Ce script vient lire un fichier Excel nommé ".b("essai.xls") ;
00119 echo " et calcule la moyenne de la colonne nommée AGE après avoir enlevé les valeurs manquantes dans cette colonne AGE." ;
00120 finp() ;
00121
00122 p("texte") ;
00123 echo "Est-ce un ".b('"bon"')." script ?" ;
00124 echo " Oui, presque s'il s'agit juste de caculer la moyenne de l'age. " ;
00125 echo " Mais il y avait plus court, si c'était juste un calcul \"à la volée\" : " ;
00126 finp() ;
00127
00128 pre_fichier("unscript2.r","cadre") ;
00129
00130 p("texte") ;
00131 echo "Le ".b('"presque"')." vient de l'absence de l'instruction ";
00132 echo b("library(gdata)")." sans laquelle le script ne fonctionne pas car, en standard, le package " ;
00133 echo hrrp("gdata")." n'est pas chargé." ;
00134 finp() ;
00135
00136 p("texte") ;
00137 echo "Un ".b('"vrai"')." script comporte en général des commentaires, un peu d'explications pour dire ce qu'on " ;
00138 echo " fait, qui l'a fait. On essaie en général de grouper les noms de fichiers, de colonnes en début de script, " ;
00139 echo " de façon à pouvoir facilement s'en servir sur d'autres données, comme par exemple :" ;
00140 finp() ;
00141
00142 pre_fichier("unscript3.r","cadre") ;
00143
00144 p("texte") ;
00145 echo "On pourrait améliorer le script en le transformant en une fonction qui prend comme paramètres le nom du fichier et le nom " ;
00146 echo " de la colonne à traiter, soit :" ;
00147 finp() ;
00148
00149 entree_R("unscript4.r") ;
00150
00151 p("texte") ;
00152 echo "Voici des exemples d'utilisation : " ;
00153 finp() ;
00154
00155 sortie_R("unscript4.res") ;
00156
00157
00158 finsolution() ;
00159
00160 finblockquote() ;
00161
00162 ## -------------------------------------------------------------------------------------------
00163
00164 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Définition des fonctions en R
00165
00166 ## -------------------------------------------------------------------------------------------
00167
00168 blockquote() ;
00169
00170 blockquote() ;
00171
00172 p("texte") ;
00173 echo b("Application :")." écrire une fonction qui renvoie le nombre de valeurs NA présents dans un vecteur. " ;
00174 echo " Comment l'appliquer à chacune des colonnes d'une matrice ou d'un data frame ?" ;
00175 finp() ;
00176
00177 p("texte") ;
00178 echo " Compléter en renvoyant ensuite à la fois le nombre de valeurs NA et le pourcentage correspondant." ;
00179 echo " Appliquer également à chacune des colonnes d'une matrice ou d'un data frame." ;
00180 finp() ;
00181
00182 p("texte") ;
00183 echo "On pourra utiliser le fichier Excel ".href("essai.xls")." pour tester les fonctions." ;
00184 finp() ;
00185
00186 finblockquote() ;
00187
00188 solution($numExo,$numSerie) ;
00189
00190 p("texte") ;
00191 echo " Pour calculer le nombre de NA dans un vecteur V on peut se contenter de l'instruction : ".b("sum(is.na(V))").". " ;
00192 echo " Puisque les fonctions utilisées dans ce calcul, à savoir " ;
00193 echo hrrr("sum") ;
00194 echo " et " ;
00195 echo hrrr("NA","","is.na()") ;
00196 echo " sont ".b("vectorielles").", on peut utiliser " ;
00197 echo hrrr("apply") ;
00198 echo " pour l'appliquer aux colonnes d'une structure. " ;
00199 echo " Voici la fonction associée et son utilisation " ;
00200 echo " (fichier ".href("nbnav1.r").") " ;
00201 echo " :" ;
00202 finp() ;
00203
00204 entree_R("nbnav1.r") ;
00205 sortie_R("nbnav1.res") ;
00206
00207 p("texte") ;
00208 echo "Renvoyer le nombre de NA et le pourcentage correspondant demande un plus gros effort de " ;
00209 echo " rédaction " ;
00210 echo " (fichier ".href("nbnav2.r").") " ;
00211 echo " :" ;
00212 finp() ;
00213
00214 entree_R("nbnav2.r") ;
00215 sortie_R("nbnav2.res") ;
00216
00217 p("texte") ;
00218 echo "On a fait le choix ici d'utiliser un vecteur pour renvoyer les résultats. Il est classique d'utiliser plutôt une liste, " ;
00219 echo " mais cela «gâche» un peu les sorties directes de résultats sur écran avec " ;
00220 echo hrrr("apply") ;
00221 echo " et il est conseillé d'utiliser alors " ;
00222 echo hrrr("lapply","","sapply()").". " ;
00223 echo " Attention : " ;
00224 echo hrrr("lapply","","sapply()")." " ;
00225 echo " ne fonctionne bien qu'avec des listes -- donc avec des data frames -- en entrée mais pas avec des matrices" ;
00226 echo " (fichier ".href("nbnav3.r").") " ;
00227 echo " :" ;
00228 finp() ;
00229
00230 entree_R("nbnav3.r") ;
00231 sortie_R("nbnav3.res") ;
00232
00233 finsolution() ;
00234
00235 finblockquote() ;
00236
00237 ## -------------------------------------------------------------------------------------------
00238
00239 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Interaction utilisateur et gestion de liste de fichiers
00240
00241 ## -------------------------------------------------------------------------------------------
00242
00243 blockquote() ;
00244
00245 blockquote() ;
00246
00247 p("texte") ;
00248 echo " Ecrire une fonction qui affiche le nombre de valeurs manquantes des colonnes d'un ou plusieurs fichiers Excel" ;
00249 echo " passés en paramètre. Si aucun paramètre, la fonction doit afficher le gestionnaire de fichiers pour qu'on puisse " ;
00250 echo " sélectionner le fichier. " ;
00251 echo "On pourra utiliser les fichier Excel ".href("essai.xls")." et ".href("war2.xls")." pour tester la fonction." ;
00252 finp() ;
00253
00254 finblockquote() ;
00255
00256 solution($numExo,$numSerie) ;
00257
00258 p("texte") ;
00259 echo "Un examen détaillé de la solution ci-dessous montre que nous avons utilisé une fonction anonyme " ;
00260 echo " pour calculer le nombre de NA et que le parcours de vecteurs de chaines de caractères est d'une " ;
00261 echo " grande simplicité en R " ;
00262 echo " (fichier ".href("nbnav4.r").") " ;
00263 echo " :" ;
00264 finp() ;
00265
00266 entree_R("nbnav4.r") ;
00267 sortie_R("nbnav4.res") ;
00268
00269 p("texte") ;
00270 echo "Il aurait été possible d'écrire une solution plus fonctionnelle et sans boucle explicite " ;
00271 echo " avec une fonction locale (traiteFic) " ;
00272 echo " comme " ;
00273 echo " (fichier ".href("nbnav5.r").") " ;
00274 echo " :" ;
00275 finp() ;
00276
00277 entree_R("nbnav5.r") ;
00278 sortie_R("nbnav5.res") ;
00279
00280 p("texte") ;
00281 echo " Mais un \"puriste\" aurait sans doute préféré la solution suivante sans fonction interne explicite " ;
00282 echo " (fichier ".href("nbnav6.r").") " ;
00283 echo " :" ;
00284 finp() ;
00285
00286 entree_R("nbnav6.r") ;
00287 sortie_R("nbnav6.res") ;
00288
00289 finsolution() ;
00290
00291 finblockquote() ;
00292
00293 /*
00294 ## -------------------------------------------------------------------------------------------
00295
00296 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Initiation simpliste à la programmation en R
00297
00298
00299 ## -------------------------------------------------------------------------------------------
00300
00301 blockquote() ;
00302
00303 blockquote() ;
00304
00305 p("texte") ;
00306 echo "Ecrire une fonction qui compte le nombre de fois où le min et le max d'un vecteur sont atteints " ;
00307 echo " pour un vecteur passé en paramètre. On affichera l'aide si aucun paramètre n'est passé, on renverra " ;
00308 echo " une liste avec les résultats, qu'on affichera si elle n'est pas affectée à une variable au niveau " ;
00309 echo " de l'appel de la fonction. " ;
00310 finp() ;
00311
00312 finblockquote() ;
00313
00314 solution($numExo,$numSerie) ;
00315
00316 p("texte") ;
00317 echo "" ;
00318 finp() ;
00319
00320 finsolution() ;
00321
00322 finblockquote() ;
00323 */
00324
00325 ## -------------------------------------------------------------------------------------------
00326
00327 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Références bibliographiques pour l'ensemble des séances
00328
00329
00330 ## -------------------------------------------------------------------------------------------
00331
00332 blockquote() ;
00333
00334 blockquote() ;
00335
00336 p("texte") ;
00337 echo "Que lire pour approfondir tout cela ?" ;
00338 finp() ;
00339
00340 finblockquote() ;
00341
00342 solution($numExo,$numSerie) ;
00343
00344 p("texte") ;
00345 echo "Plein de choses !" ;
00346 finp() ;
00347
00348 p("texte") ;
00349 echo "Il faut d'abord choisir si on veut approfondir le langage R, les statistiques ou la programmation. " ;
00350 echo " Ensuite, il n'y a plus que l'embarras du choix. " ;
00351 finp() ;
00352
00353 p("texte") ;
00354 echo " Voir par exemple ma question sur les " ;
00355 echo href("../Programmation_R/progr.php?n=1&m=e#livres","livres")." pour R " ;
00356 echo " et sa ".href("../Programmation_R/progr.php?n=1&m=s#matloff","réponse")." associée " ;
00357 echo " dans mes pages de ".href("../Programmation_R/","programmation R avancée").". " ;
00358 finp() ;
00359
00360 finsolution() ;
00361
00362 finblockquote() ;
00363
00364 ## -------------------------------------------------------------------------------------------
00365
00366 finPageExercices($numSerie) ; # contient finSection() et finPage() ; la fonction est dans perf_inc.php
00367
00368 ?>
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)