Valid XHTML     Valid CSS2    

Listing du fichier perf4.php

 

00001     <?php
00002     
# # (gH) -_- perf4.php ; TimeStamp (unix) : 19 Ao&ucirc;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&nbsp;?" ;
00029     
$idr
++; $tableauDesRubriques[$idr] = "Notion de script $R" ; # , gestion des entr&eacute;es et sorties avec $R" ;
00030     
$idr
++; $tableauDesRubriques[$idr] = "D&eacute;finition des fonctions en $R" ;
00031     
$idr
++; $tableauDesRubriques[$idr] = "Interaction utilisateur et gestion de liste de fichiers" ;
00032     
#$idr++; $tableauDesRubriques[$idr] = "Initiation simpliste &agrave; la programmation en $R" ;
00033     
$idr
++; $tableauDesRubriques[$idr] = "R&eacute;f&eacute;rences bibliographiques pour l'ensemble des s&eacute;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&eacute;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&nbsp;?" ;
00090     echo
" Est-ce forc&eacute;ment un programme&nbsp;?" ;
00091     echo
" Est-ce forc&eacute;ment une fonction&nbsp;?" ;
00092     
finp() ;
00093     
00094     
p
("texte") ;
00095     echo
"Commenter le script suivant&nbsp;:" ;
00096     
finp() ;
00097     
00098     
pre_fichier
("unscript.r","cadre") ;
00099     
00100     
p
("texte") ;
00101     echo
"Est-ce un "
.b('"bon"')." script&nbsp;?" ;
00102     echo
" Comment l'am&eacute;liorer&nbsp;?" ;
00103     echo
" Peut-on en faire une fonction&nbsp;?" ;
00104     echo
" Quels en seraient les param&egrave;tres&nbsp;?" ;
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&eacute;cute dans l'ordre des lignes. " ;
00113     echo
" Ce n'est pas forc&eacute;ment une fonction, mais cela peut contenir des d&eacute;finitions et des appels de fonctions. " ;
00114     echo
" Le script propos&eacute; ne d&eacute;finit aucune fonction. " ;
00115     
finp() ;
00116     
00117     
p
("texte") ;
00118     echo
"Ce script vient lire un fichier Excel nomm&eacute; "
.b("essai.xls") ;
00119     echo
" et calcule la moyenne de la colonne nomm&eacute;e AGE apr&egrave;s avoir enlev&eacute; les valeurs manquantes dans cette colonne AGE." ;
00120     
finp() ;
00121     
00122     
p
("texte") ;
00123     echo
"Est-ce un "
.b('"bon"')." script&nbsp;?" ;
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'&eacute;tait juste un calcul \"&agrave; la vol&eacute;e\"&nbsp;: " ;
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&eacute;." ;
00134     
finp() ;
00135     
00136     
p
("texte") ;
00137     echo
"Un "
.b('"vrai"')." script comporte en g&eacute;n&eacute;ral des commentaires, un peu d'explications pour dire ce qu'on " ;
00138     echo
" fait, qui l'a fait. On essaie en g&eacute;n&eacute;ral de grouper les noms de fichiers, de colonnes en d&eacute;but de script, " ;
00139     echo
" de fa&ccedil;on &agrave; pouvoir facilement s'en servir sur d'autres donn&eacute;es, comme par exemple&nbsp;:" ;
00140     
finp() ;
00141     
00142     
pre_fichier
("unscript3.r","cadre") ;
00143     
00144     
p
("texte") ;
00145     echo
"On pourrait am&eacute;liorer le script en le transformant en une fonction qui prend comme param&egrave;tres le nom du fichier et le nom " ;
00146     echo
" de la colonne &agrave; traiter, soit&nbsp;:" ;
00147     
finp() ;
00148     
00149     
entree_R
("unscript4.r") ;
00150     
00151     
p
("texte") ;
00152     echo
"Voici des exemples d'utilisation&nbsp;: " ;
00153     
finp() ;
00154     
00155     
sortie_R
("unscript4.res") ;
00156     
00157     
00158     
finsolution() ;
00159     
00160     
finblockquote() ;
00161     
00162     
## -------------------------------------------------------------------------------------------
00163     
00164     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # D&eacute;finition des fonctions en R
00165     
00166     ## -------------------------------------------------------------------------------------------
00167     
00168     
blockquote() ;
00169     
00170     
blockquote() ;
00171     
00172     
p
("texte") ;
00173     echo
b
("Application&nbsp;:")." &eacute;crire une fonction qui renvoie le nombre de valeurs NA pr&eacute;sents dans un vecteur. " ;
00174     echo
" Comment l'appliquer &agrave; chacune des colonnes d'une matrice ou d'un data frame&nbsp;?" ;
00175     
finp() ;
00176     
00177     
p
("texte") ;
00178     echo
" Compl&eacute;ter en renvoyant ensuite &agrave; la fois le nombre de valeurs NA et le pourcentage correspondant." ;
00179     echo
" Appliquer &eacute;galement &agrave; 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&nbsp;: "
.b("sum(is.na(V))").". " ;
00192     echo
" Puisque les fonctions utilis&eacute;es dans ce calcul, &agrave; 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&eacute;e et son utilisation " ;
00200     echo
" (fichier "
.href("nbnav1.r").") " ;
00201     echo
"&nbsp;:" ;
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&eacute;daction " ;
00210     echo
" (fichier "
.href("nbnav2.r").") " ;
00211     echo
"&nbsp;:" ;
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&eacute;sultats. Il est classique d'utiliser plut&ocirc;t une liste, " ;
00219     echo
" mais cela &laquo;g&acirc;che&raquo; un peu les sorties directes de r&eacute;sultats sur &eacute;cran avec " ;
00220     echo
hrrr
("apply") ;
00221     echo
" et il est conseill&eacute; d'utiliser alors " ;
00222     echo
hrrr
("lapply","","sapply()").". " ;
00223     echo
" Attention&nbsp;: " ;
00224     echo
hrrr
("lapply","","sapply()")." " ;
00225     echo
" ne fonctionne bien qu'avec des listes -- donc avec des data frames -- en entr&eacute;e mais pas avec des matrices" ;
00226     echo
" (fichier "
.href("nbnav3.r").") " ;
00227     echo
" &nbsp;:" ;
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&eacute;s en param&egrave;tre. Si aucun param&egrave;tre, la fonction doit afficher le gestionnaire de fichiers pour qu'on puisse " ;
00250     echo
" s&eacute;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&eacute;taill&eacute; de la solution ci-dessous montre que nous avons utilis&eacute; une fonction anonyme " ;
00260     echo
" pour calculer le nombre de NA et que le parcours de vecteurs de chaines de caract&egrave;res est d'une " ;
00261     echo
" grande simplicit&eacute; en R " ;
00262     echo
" (fichier "
.href("nbnav4.r").") " ;
00263     echo
" &nbsp;:" ;
00264     
finp() ;
00265     
00266     
entree_R
("nbnav4.r") ;
00267     
sortie_R
("nbnav4.res") ;
00268     
00269     
p
("texte") ;
00270     echo
"Il aurait &eacute;t&eacute; possible d'&eacute;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
" &nbsp;:" ;
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&eacute;f&eacute;r&eacute; la solution suivante sans fonction interne explicite " ;
00282     echo
" (fichier "
.href("nbnav6.r").") " ;
00283     echo
" &nbsp;:" ;
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 &agrave; 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&ugrave; le min et le max d'un vecteur sont atteints " ;
00307     echo " pour un vecteur pass&eacute; en param&egrave;tre. On affichera l'aide si aucun param&egrave;tre n'est pass&eacute;, on renverra " ;
00308     echo " une liste avec les r&eacute;sultats, qu'on affichera si elle n'est pas affect&eacute;e &agrave; 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&eacute;f&eacute;rences bibliographiques pour l'ensemble des s&eacute;ances
00328     
00329     
00330     ## -------------------------------------------------------------------------------------------
00331     
00332     
blockquote() ;
00333     
00334     
blockquote() ;
00335     
00336     
p
("texte") ;
00337     echo
"Que lire pour approfondir tout cela&nbsp;?" ;
00338     
finp() ;
00339     
00340     
finblockquote() ;
00341     
00342     
solution
($numExo,$numSerie) ;
00343     
00344     
p
("texte") ;
00345     echo
"Plein de choses&nbsp;!" ;
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&amp;m=e#livres","livres")." pour R " ;
00356     echo
" et sa "
.href("../Programmation_R/progr.php?n=1&amp;m=s#matloff","r&eacute;ponse")." associ&eacute;e " ;
00357     echo
" dans mes pages de "
.href("../Programmation_R/","programmation R avanc&eacute;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 gH    Retour à la page principale de   (gH)