Valid XHTML     Valid CSS2    

Listing du fichier progie9.php

 

00001     <?php
00002     
# # (gH) -_- progie9.php ; TimeStamp (unix) : 01 Septembre 2015 vers 17:37
00003     
00004     
error_reporting(E_ALL | E_NOTICE | E_STRICT) ;
00005     
00006     include_once(
"std7.php") ;
00007     include_once(
"progi.php") ;
00008     include_once(
"statuno7.php") ;
00009     
00010     
$R
= s_span("R","gbleuf") ;
00011     
$numSerie
= 9 ;
00012     
debutPageExercices
($numSerie) ;
00013     
00014     
## -------------------------------------------------------------------------------------------
00015     
00016     
p
("texte") ;
00017     echo
"" ;
00018     
finp() ;
00019     
debutSection() ;
00020     
00021     
$tableauDesRubriques = array() ;
00022     
$idr
= 0 ;
00023     
00024     
$idr
++; $tableauDesRubriques[$idr] = "Profilage et d&eacute;bogagge sous $R" ;
00025     
$idr
++; $tableauDesRubriques[$idr] = "Packages pour tests en $R" ;
00026     
$idr
++; $tableauDesRubriques[$idr] = "Comment d&eacute;finit-on des classes d'objets en $R&nbsp;?" ;
00027     
$idr
++; $tableauDesRubriques[$idr] = "Comment &eacute;crit-on un package $R&nbsp;?" ;
00028     
$idr
++; $tableauDesRubriques[$idr] = "Est-il facile de reformater du code $R&nbsp;?" ;
00029     
$idr
++; $tableauDesRubriques[$idr] = "Comment impl&eacute;menter des ".noir("\"reproducible researches\"")." en $R&nbsp;?" ;
00030     
$idr
++; $tableauDesRubriques[$idr] = "Bibliographie sur la programmation $R et tidyverse" ;
00031     
00032     
$tdmCRLM
= new tdm($tableauDesRubriques) ;
00033     
$tdmCRLM
->titre() ;
00034     
$tdmCRLM
->menu("oui","oui","nou") ;
00035     
00036     
afficherSolutions
($numSerie) ;
00037     
00038     
finSection() ;
00039     
00040     
debutSection() ;
00041     
$numExo
= 0 ;
00042     
00043     
## -------------------------------------------------------------------------------------------
00044     
00045     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Profilage et d&eacute;bogagge sous $R
00046     
00047     ## -------------------------------------------------------------------------------------------
00048     
00049     
blockquote() ;
00050     
00051     
blockquote() ;
00052     
00053     
p
("texte") ;
00054     echo
"Peut-on facilement d&eacute;bugger du code
$R&nbsp;?" ;
00055     echo
" Et le &laquo;profiler, le benchmarker&raquo;&nbsp;?" ;
00056     
finp() ;
00057     
00058     
p
("texte") ;
00059     echo
" Par exemple, est-il plus rapide d'&eacute;crire "
.b("c(min(v),max(v))")." ou ".b("range(v)")."&nbsp;?" ;
00060     
finp() ;
00061     
00062     
finblockquote() ;
00063     
00064     
solution
($numExo,$numSerie) ;
00065     
00066     
p
("texte") ;
00067     echo
"Si vous ne savez pas r&eacute;pondre &agrave; cette question, c'est que vous n'avez pas fait la s&eacute;rie pr&eacute;c&eacute;dente d'exercices&nbsp;!" ;
00068     echo
" Donc voici quelques mots pour vous rappeler ce qui a &eacute;t&eacute; dit &agrave; " ;
00069     echo
href
("progie8.php?solutions=0","la s&eacute;ance 8","grouge")."." ;
00070     
finp() ;
00071     
00072     
p
("texte") ;
00073     echo
"
$R met &agrave; disposition de nombreux outils et packages, " ;
00074     echo
" comme les fonctions " ;
00075     echo
hrrr
("debug").", " ;
00076     echo
hrrr
("browser").", " ;
00077     echo
hrrr
("recover","utils").", " ;
00078     echo
" et " ;
00079     echo
hrrr
("Rprof","utils") ;
00080     echo
" ainsi que les packages " ;
00081     echo
hrrp
("pryr") ;
00082     echo
" et " ;
00083     
#echo href("http://www.hansenlab.org/rstats/2014/01/30/lineprof/","lineprof") ;
00084     
echo
href("https://github.com/hadley/lineprof","lineprof") ;
00085     echo
". " ;
00086     
finp() ;
00087     
00088     
p
("texte") ;
00089     echo
"On pourra consulter " ;
00090     echo
href
("http://www.math.ncu.edu.tw/~chenwc/R_note/reference/debug/Rdebug.pdf","Rdebug.pdf") ;
00091     echo
" ("
.href("Rdebug.pdf","copie locale").") sachant que le d&eacute;boggage est int&eacute;gr&eacute; &agrave; $rstudio." ;
00092     
finp() ;
00093     
00094     
p
("texte") ;
00095     echo
"Vous pouvez aussi vous reporter &agrave; la s&eacute;ance "
.rouge("4")." de nos cours de " ;
00096     echo
href
("../Programmation_avancee/","Programmation avanc&eacute;e avec R","gbleuf").". " ;
00097     
finp() ;
00098     
00099     
p
("texte") ;
00100     echo
" En ce qui concerne "
.b("c(min(v),max(v))")." ou ".b("range(v)").", le r&eacute;sultat est sans appel&nbsp;:" ;
00101     
finp() ;
00102     
00103     
pre_fichier
("range.r","cadrebleu") ;
00104     
pre_fichier
("range_sor.txt","cadrejaune") ;
00105     
00106     
blockquote() ;
00107     
00108     
table
(1,5,"collapse") ; tr() ; td() ;
00109     
p() ;
00110     
nbsp
(4) ;
00111     
$img
= "range.png" ;
00112      echo
href
($img,img($img,"",800)) ;
00113     
finp() ;
00114     
fintd
() ; fintr() ; fintable() ;
00115     
finblockquote() ;
00116     
00117     
finsolution() ;
00118     
00119     
finblockquote() ;
00120     
00121     
## -------------------------------------------------------------------------------------------
00122     
00123     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Packages pour tests en R
00124     
00125     ## -------------------------------------------------------------------------------------------
00126     
00127     
blockquote() ;
00128     
00129     
blockquote() ;
00130     
00131     
p
("texte") ;
00132     echo
" Comment fait-on des tests unitaires en
$R&nbsp;?" ;
00133     echo
" Quels packages sont pr&eacute;vus pour cela&nbsp;? " ;
00134     echo
b
("Application&nbsp;:") ;
00135     echo
" &eacute;crire des tests pour la fonction ci-dessous avec les packages "
. hrrp("testthat")." et " ;
00136     echo
href
("https://cran.r-project.org/web/packages/assertive/index.html","assertive","gvertf").". " ;
00137     
finp() ;
00138     
00139     
pre_fichier
("convpouces.r","cadre") ;
00140     
00141     
p
("texte") ;
00142     echo
" Expliquer pourquoi les fonctions de
$R ne fournissent pas d'aide si on les appelle sans param&egrave;tre, contrairement " ;
00143     echo
" &agrave; nos fonctions&nbsp;:" ;
00144     
finp() ;
00145     
00146     
pre_fichier
("convpouces01.txt","cadrejaune") ;
00147     
00148     
finblockquote() ;
00149     
00150     
solution
($numExo,$numSerie) ;
00151     
00152     
p
("texte") ;
00153     echo
" Plusieurs packages existent, dont " ;
00154     echo
hrrp
("assertr").", " ;
00155     echo
hrrp
("ensurer").", " ;
00156     echo
hrrp
("checkmate").", " ;
00157     echo
hrrp
("tester").", " ;
00158     echo
hrrp
("RUnit")."... " ;
00159     
finp() ;
00160     
00161     
p
("texte") ;
00162     echo
" Parmi tous ces packages, deux semblent au-dessus du lot&nbsp;: " ;
00163     echo
hrrp
("assertive")." et " ;
00164     echo
hrrp
("testthat").". " ;
00165     echo
" On pourra consulter l'ouvrage " ;
00166     echo
href
("https://www.crcpress.com/Testing-R-Code/Cotton/p/book/9781498763653","testing R code") ;
00167     echo
" pour s'en convaincre. " ;
00168     
finp() ;
00169     
00170     
p() ;
00171     
nbsp
(4) ;
00172     
$img
= "testrcode.jpg" ;
00173      echo
href
($img,img($img,"",300)) ;
00174     
finp() ;
00175     
00176     
p
("texte") ;
00177     echo
" La fonction "
.b("convPouces()")." comporte deux param&egrave;tres, ".b("valeur")." et ".b("unit&eacute;") ;
00178     echo
" qui doivent &ecirc;tre respectivement un entier non n&eacute;gatif et une chaine de caract&egrave;res. Voici les tests associ&eacute;s&nbsp;:" ;
00179     
finp() ;
00180     
00181     
pre_fichier
("convpouces01.r","cadre") ;
00182     
00183     
p
("texte") ;
00184     echo
" Cette fonction "
.b("convPouces()")." est incorrecte car les variables ".b("resultatConv")." et ".b("autreu") ;
00185     echo
" ne sont pas initialis&eacute;es mais parfois quand m&ecirc;me renvoy&eacute;es. " ;
00186     echo
" Voici les tests associ&eacute;s, nous vous laissons modifier la fonction en cons&eacute;quence..." ;
00187     
finp() ;
00188     
00189     
pre_fichier
("convpouces03.r","cadrebleu",0,1) ;
00190     
pre_fichier
("convpouces02.r","cadrejaune",0,1) ;
00191     
#pre_fichier("convpouces02._sor.txt","cadrejaune") ;
00192     
00193     
blockquote() ;
00194     
div() ;
00195     
nbsp
(10) ;
00196     
table
(1,5,"collapse") ; tr() ; td() ;
00197     
p() ;
00198     
nbsp
(4) ;
00199     
$img
= "testConv.png" ;
00200      echo
href
($img,img($img,"",800)) ;
00201     
finp() ;
00202     
fintd
() ; fintr() ; fintable() ;
00203     
findiv() ;
00204     
finblockquote() ;
00205     
00206     
p
("texte") ;
00207     echo
" Les fonctions de
$R ne fournissent pas d'aide si on les appelle sans param&egrave;tre, contrairement " ;
00208     echo
" &agrave; nos fonctions parce qu'elles sont toutes dans des packages. Donc leur aide s'obtient via "
.b('help("laFonction")').", ";
00209     echo
" ce qui n'est pas le cas de nos fonctions." ;
00210     
finp() ;
00211     
00212     
finsolution() ;
00213     
00214     
finblockquote() ;
00215     
00216     
## -------------------------------------------------------------------------------------------
00217     
00218     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Comment d&eacute;finit-on des classes d'objets en $R
00219     
00220     ## -------------------------------------------------------------------------------------------
00221     
00222     
blockquote() ;
00223     
00224     
blockquote() ;
00225     
00226     
p
("texte") ;
00227     echo
"Dans les langages de programmation classiques, on d&eacute;finit des classes d'objets. " ;
00228     echo
" Peut-on le faire en
$R&nbsp;?" ;
00229     
finp() ;
00230     
00231     
finblockquote() ;
00232     
00233     
solution
($numExo,$numSerie) ;
00234     
00235     
p
("texte") ;
00236     echo
" Oui, bien s&ucirc;r, il y a m&ecirc;me deux langages &agrave; objets int&eacute;gr&eacute;s &agrave;
$R, historiquement&nbsp;:" ;
00237     echo
" celui des classes S3 (ancien) et celui des classes S4 (nouveau)." ;
00238     echo
" Depuis 2018 on a aussi des objets R6. Voir l'excellent document " ;
00239     echo
href
("https://adv-r.hadley.nz/oo.html","OO.html")." &agrave; ce sujet." ;
00240     
finp() ;
00241     
00242     
http
://cran.r-project.org/doc/contrib/Genolini-S4tutorialV0-5en.pdf
00243     
p
("texte") ;
00244     echo
"Un document de r&eacute;f&eacute;rence, disponible au cran est " ;
00245     echo
href
("http://cran.r-project.org/doc/contrib/Genolini-S4tutorialV0-5en.pdf","introduction to S4") ;
00246     echo
" ("
.href("genoliniS4.pdf","copie locale").") qui est en anglais. Une version fran&ccedil;aise " ;
00247     echo
" existe aussi nomm&eacute;e " ;
00248     echo
href
("http://cran.r-project.org/doc/contrib/Genolini-PetitManuelDeS4.pdf","petit manuel de S4") ;
00249     echo
" ("
.href("genoliniS4fr.pdf","copie locale").")." ;
00250     
finp() ;
00251     
00252     
p
("texte") ;
00253     echo
"L&agrave; encore, vous pouvez aussi vous reporter &agrave; la s&eacute;ance "
.rouge("4")." de nos cours de " ;
00254     echo
href
("../Programmation_avancee/","Programmation avanc&eacute;e avec R","gbleuf")." " ;
00255     echo
" pour voir un exemple concret de cr&eacute;ation d'une classe d'objets." ;
00256     
finp() ;
00257     
00258     
p
("texte") ;
00259     echo
" Vous trouverez "
.href("demoObj1.txt","ici")." la d&eacute;finition des classes " ;
00260     echo
" et "
.href("demoObj2.r","l&agrave;")." leur utilisation, reproduit ci-dessous." ;
00261     
finp() ;
00262     
00263     
pre_fichier
("demoObj2.r","cadrebleu") ;
00264     
pre_fichier
("demoObj2.sor","cadrejaune") ;
00265     
00266     
finsolution() ;
00267     
00268     
finblockquote() ;
00269     
00270     
## -------------------------------------------------------------------------------------------
00271     
00272     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Comment &eacute;crit-on un package $R&nbsp;?" ;
00273     
00274     ## -------------------------------------------------------------------------------------------
00275     
00276     
blockquote() ;
00277     
00278     
blockquote() ;
00279     
00280     
p
("texte") ;
00281     echo
"Que contient exactement un package
$R&nbsp;?" ;
00282     echo
" Est-ce facile d'en &eacute;crire un, d'en d&eacute;poser un au CRAN&nbsp;?" ;
00283     
finp() ;
00284     
00285     
finblockquote() ;
00286     
00287     
solution
($numExo,$numSerie) ;
00288     
00289     
p
("texte") ;
00290     echo
"Un package comporte des fonctions, des donn&eacute;es, de l'aide et des exemples. " ;
00291     echo
" Sur le principe, ce n'est pas difficile d'&eacute;crire un package. Mais c'est un peu fastidieux la premi&egrave;re fois. " ;
00292     
finp() ;
00293     
00294     
p
("texte") ;
00295     echo
"Pour &eacute;viter de vous reporter une nouvelle fois &agrave; la s&eacute;ance "
.rouge("4")." de nos cours de " ;
00296     echo
href
("../Programmation_avancee/","Programmation avanc&eacute;e avec R","gbleuf")." qui montre l'&eacute;criture d'un tout petit package, " ;
00297     echo
" nomm&eacute; "
.b("conv") ;
00298     echo
" vous pouvez consulter la " ;
00299     echo
href
("http://christophe.genolini.free.fr/webTutorial/construireUnPackage.php","page de C. Genolini") ;
00300     echo
" sur le sujet." ;
00301     
finp() ;
00302     
00303     
p
("texte") ;
00304     echo
" Comme indiqu&eacute; &agrave; la question pr&eacute;c&eacute;dente, une fois le package charg&eacute;, les fonctions &eacute;crites dans le package ont le m&ecirc;me statut " ;
00305     echo
" que les autres fonctions de
$R, elles ont une compl&eacute;tion automatique, leur aide s'affiche dans le panneau d'aide etc." ;
00306     
finp() ;
00307     
00308     
blockquote() ;
00309     
div() ;
00310     
nbsp
(10) ;
00311     
table
(1,5,"collapse") ; tr() ; td() ;
00312     
p() ;
00313     
nbsp
(4) ;
00314     
$img
= "convAide.png" ;
00315      echo
href
($img,img($img,"",800)) ;
00316     
finp() ;
00317     
fintd
() ; fintr() ; fintable() ;
00318     
findiv() ;
00319     
finblockquote() ;
00320     
00321     
p
("texte") ;
00322     echo
" On trouvera ci-dessous, issus des ressources de "
.href("https://www.rstudio.com/resources/cheatsheets/","Rstudio") ;
00323     echo
" le rappel de l'organisation d'un package, les commandes de construction et de test etc;" ;
00324     
finp() ;
00325     
00326     
blockquote() ;
00327     
div() ;
00328     
nbsp
(10) ;
00329     
table
(1,5,"collapse") ; tr() ; td() ;
00330     
p() ;
00331     
nbsp
(4) ;
00332     
$img
= "packages.png" ;
00333      echo
href
($img,img($img,"",800)) ;
00334     
finp() ;
00335     
fintd
() ; fintr() ; fintable() ;
00336     
findiv() ;
00337     
finblockquote() ;
00338     
00339     
p
("texte") ;
00340     echo
" A titre d'exemple, sous Linux, cr&eacute;ez un r&eacute;pertoire nomm&eacute; "
.b("conv")." et d&eacute;compressez l'archive ".href("conv.zip")." dans ce r&eacute;pertoire. " ;
00341     echo
" Dans le r&eacute;pertoire parent de "
.b("conv").", ex&eacute;cutez la commande ";
00342     echo
ghRouge
("R&nbsp;CMD&nbsp;check&nbsp;conv") ;
00343     echo
" puis la commande ";
00344     echo
ghRouge
("R&nbsp;CMD&nbsp;build&nbsp;conv").". " ;
00345     echo
" Vous devriez disposer alors du fichier "
.href("conv_1.0.tar.gz")." qu'on peut installer via Rstudio." ;
00346     
finp() ;
00347     
00348     
p
("texte") ;
00349     echo
" Le r&eacute;sultat de la commande "
.b("check")." est ".href("rcmdcheck.txt") ;
00350     echo
" et celui de la commande "
.b("buil")." est ".href("rcmdbuild.txt").". " ;
00351     
finp() ;
00352     
00353     
p
("texte") ;
00354     echo
" Un autre exemple complet, avec du code R et C++ pour construire un package est " ;
00355     echo
href
("https://bitbucket.org/richierocks/hypotenuser/src/master/","ici") ;
00356     echo
" qui aboutit au fichier "
.href("hypotenuser.tar.gz")." que l'on peut installer dans Rstudio." ;
00357     
finp() ;
00358     
00359     
finsolution() ;
00360     
00361     
finblockquote() ;
00362     
00363     
## -------------------------------------------------------------------------------------------
00364     
00365     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Est-il facile de reformater du code $R&nbsp;?" ;
00366     
00367     ## -------------------------------------------------------------------------------------------
00368     
00369     
blockquote() ;
00370     
00371     
blockquote() ;
00372     
00373     
p
("texte") ;
00374     echo
"Certains &eacute;crivent du code
$R &laquo;n'importe comment&raquo;. " ;
00375     echo
" Y a-t-il des r&egrave;gles d'&eacute;criture de code
$R, des outils pour reformater le code $R&nbsp;?" ;
00376     
finp() ;
00377     
00378     
finblockquote() ;
00379     
00380     
solution
($numExo,$numSerie) ;
00381     
00382     
p
("texte") ;
00383     echo
"Un outil tr&egrave;s adapt&eacute; est la fonction "
.b("tidy_source()")." du package " ;
00384     echo
href
("http://finzi.psych.upenn.edu/R/library/formatR/doc/formatR.html","formatR").". " ;
00385     
finp() ;
00386     
00387     
p
("texte") ;
00388     echo
"Le plus important est de garder un m&ecirc;me style d'&eacute;crire tout au long du code afin de faciliter la relecture." ;
00389     
finp() ;
00390     
00391     
finsolution() ;
00392     
00393     
finblockquote() ;
00394     
00395     
## -------------------------------------------------------------------------------------------
00396     
00397     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Comment impl&eacute;menter des ".noir("reproducible researches")." en $R&nbsp;?" ;
00398     
00399     ## -------------------------------------------------------------------------------------------
00400     
00401     
blockquote() ;
00402     
00403     
blockquote() ;
00404     
00405     
p
("texte") ;
00406     echo
"
$R et $rstudio ont un gros probl&egrave;me avec la notion d'environnement&nbsp;: " ;
00407     echo
" certaines variables ont &eacute;t&eacute; cr&eacute;es \"&agrave; la main\", en interactif, et
$R les voit dans les fonctions... " ;
00408     echo
" Comment produire et documenter du code \"propre\" et pouvoir reproduire des comportements fonctionnels en
$R&nbsp;?" ;
00409     echo
" Quels outils faut-il utiliser pour faire du "
.b("DRY")." (qu'est-ce&nbsp;?) en $R&nbsp;?" ;
00410     
finp() ;
00411     
00412     
finblockquote() ;
00413     
00414     
solution
($numExo,$numSerie) ;
00415     
00416     
p
("texte") ;
00417     echo
"C'est tr&egrave;s simple, il suffit d'utiliser " ;
00418     echo
href
("http://yihui.name/knitr/","knitr")." qui s'interface tr&egrave;s bien avec $rstudio." ;
00419     echo
" Le code
$R y est ex&eacute;cut&eacute; &agrave; partir d'un environnement vierge &agrave; chaque fois, ce qui peut garantir " ;
00420     echo
" la reproductibilit&eacute;. " ;
00421     
finp() ;
00422     
00423     
p
("texte") ;
00424     echo
href
("http://yihui.name/knitr/","knitr")." est plus g&eacute;n&eacute;ral et finalement plus simple &agrave; utiliser " ;
00425     echo
" que "
.href("https://www.statistik.lmu.de/~leisch/Sweave/","Sweave").". " ;
00426     echo
" On consultera avec int&eacute;r&ecirc;t les ouvrages suivants&nbsp;:" ;
00427     
finp() ;
00428     
00429     
table
(0,20) ;
00430     
tr() ;
00431     
00432     
td() ;
00433     
p() ;
00434     
nbsp
(10) ;
00435     
$img
= "reproducible.jpg" ;
00436     echo
href
("http://www.amazon.com/Reproducible-Research-Studio-Chapman-Series/dp/1466572841",img($img,"",125)) ;
00437     
finp() ;
00438     
fintd() ;
00439     
00440     
td() ;
00441     
p() ;
00442     
nbsp
(10) ;
00443     
$img
= "knitr.jpg" ;
00444     echo
href
("http://www.amazon.com/Dynamic-Documents-knitr-Chapman-Series/dp/1482203537",img($img,"",125)) ;
00445     
finp() ;
00446     
fintd() ;
00447     
00448     
fintr() ;
00449     
fintable() ;
00450     
00451     
p
("texte") ;
00452     echo
" A titre de v&eacute;rification, on pourra reproduire int&eacute;gralement le livre de C. Gandrud en suivant " ;
00453     echo
href
("https://github.com/christophergandrud/Rep-Res-Book","ce lien")."." ;
00454     
finp() ;
00455     
00456     
# http://christophergandrud.github.io/RepResR-RStudio/errata.htm
00457     
00458     
p
("texte") ;
00459     echo
" Pour "
.href("https://en.wikipedia.org/wiki/Don%27t_repeat_yourself","DRY")." on peut consulter " ;
00460     echo
href
("https://cpb-ap-se2.wpmucdn.com/blogs.auckland.ac.nz/dist/1/411/files/2018/12/1_peterBaker_AASC18_talk-1aiphvo.pdf","Baker") ;
00461     echo
" ("
.href("peterBaker.pdf","copie locale").")." ;
00462     
finp() ;
00463     
00464     
finsolution() ;
00465     
00466     
finblockquote() ;
00467     
00468     
## -------------------------------------------------------------------------------------------
00469     
00470     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Bibliographie sur la programmation $R
00471     
00472     ## -------------------------------------------------------------------------------------------
00473     
00474     
blockquote() ;
00475     
00476     
blockquote() ;
00477     
00478     
p
("texte") ;
00479     echo
"Il existe beaucoup de livres sur
$R vu sous l'angle des statistiques " ;
00480     echo
" comme on peut le voir " ;
00481     echo
href
("../Programmation_avancee/progr.php?n=1&amp;m=e#livres","ici") ;
00482     echo
" ici " ;
00483     echo
href
("../Programmation_avancee/progr.php?n=1&amp;m=s#livres","l&agrave;").". " ;
00484     echo
" Mais pour la programmation, quels " ;
00485     echo
" ouvrages trouve-t-on&nbsp;?" ;
00486     
finp() ;
00487     
00488     
p
("texte") ;
00489     echo
" Quels livres de H. Wickham (qui est-ce&nbsp;?) sont en ligne&nbsp;?" ;
00490     
finp() ;
00491     
00492     
p
("texte") ;
00493     echo
" Expliquer ce que font les instructions suivantes &eacute;crites en
$R pour ".b("tidyverse")."." ;
00494     
finp() ;
00495     
00496     
pre_fichier
("tidyverse1.r","cadrebleu") ;
00497     
00498     
p
("texte") ;
00499     echo
" R&eacute;&eacute;crire en
$R/".b("tidyverse")." le code suivant, solution d'un de nos exercices." ;
00500     
finp() ;
00501     
00502     
pre_fichier
("tidyverse2.r","cadrebleu") ;
00503     
00504     
p
("texte") ;
00505     echo
" Comment &eacute;crire sa th&egrave;se avec Rstudio&nbsp;?";
00506     
finp() ;
00507     
00508     
finblockquote() ;
00509     
00510     
solution
($numExo,$numSerie) ;
00511     
00512     
p
("texte") ;
00513     echo
" S'il y avait peu d'ouvrages en 2015, et aucun un peu long en fran&ccedil;ais, " ;
00514     echo
" sauf l'ouvrage de "
.href("http://cran.r-project.org/doc/contrib/Goulet_introduction_programmation_R.pdf","V. Goulet") ;
00515     echo
" ("
.href("goulet.pdf","copie locale")."), les choses ont beaucoup &eacute;volu&eacute;, notamment en 2017." ;
00516     echo
" Nous vous conseillons toujours les trois livres qui suivent, du plus g&eacute;n&eacute;ral (Gentleman) au plus sp&eacute;cialis&eacute; (Wickman)&nbsp;: " ;
00517     
finp() ;
00518     
00519     
table
(0,20,"collapse") ;
00520     
tr() ;
00521     
td
("C") ; echo href("http://www.crcpress.com/product/isbn/9781420063677",img("rprogbio.jpg","",100)) ; fintd() ;
00522     
td
("C") ; echo href("http://nostarch.com/artofr.htm",img("artofr.png","",120)) ; fintd() ;
00523     
td
("C") ; echo href("http://http://www.amazon.com/dp/1466586966/ref=cm_sw_su_dp?tag=devtools-20",img("advancedr.jpg","",100)) ; fintd() ;
00524     
fintr() ;
00525     
tr() ;
00526     
td
("C") ; echo href("http://www.crcpress.com/product/isbn/9781420063677","R.&nbsp;Gentleman") ; fintd() ;
00527     
td
("C") ; echo href("http://nostarch.com/artofr.htm","N.&nbsp;Matloff") ; fintd() ;
00528     
td
("C") ; echo href("http://http://www.amazon.com/dp/1466586966/ref=cm_sw_su_dp?tag=devtools-20","H.&nbsp;Wickham") ; fintd() ;
00529     
fintr() ;
00530     
fintable() ;
00531     
00532     
p
("texte") ;
00533     echo
" Aujourd'hui, en 2019, une recherche sur le web avec les termes " ;
00534     echo
b
("r programming").", ".ghBleu("r programming objects")." ou encore ".ghVert("r programming functional") ;
00535     echo
" fournir de nombreuses r&eacute;ponses, comme ci-dessous&nbsp;:" ;
00536     
finp() ;
00537     
00538     
p() ;
00539      echo
b
("R programming") ;
00540     
finp() ;
00541     
p() ;
00542     
nbsp
(4) ;
00543     
$img
= "programming.png" ;
00544      echo
href
($img,img($img,"",800)) ;
00545     
finp() ;
00546     
00547     
p() ;
00548      echo
b
("R programming objects") ;
00549     
finp() ;
00550     
p() ;
00551     
nbsp
(4) ;
00552     
$img
= "objects.png" ;
00553      echo
href
($img,img($img,"",800)) ;
00554     
finp() ;
00555     
00556     
p() ;
00557      echo
b
("R programming functional") ;
00558     
finp() ;
00559     
p() ;
00560     
nbsp
(4) ;
00561     
$img
= "functional.png" ;
00562      echo
href
($img,img($img,"",800)) ;
00563     
finp() ;
00564     
00565     
p
("texte") ;
00566     echo
href
("https://fr.wikipedia.org/wiki/Hadley_Wickham","Hadley WICKHAM") ;
00567     echo
" est l'un des auteurs de "
.b("tidyverse").". Voici ses livres en ligne&nbsp;:" ;
00568     
finp() ;
00569     
00570     
blockquote() ;
00571     
table
(0,30) ;
00572     
tr() ;
00573     
td
("C") ;
00574      echo
href
("http://r-pkgs.had.co.nz/",img("hw_rpackages.png","",250)) ;
00575     
fintd() ;
00576     
td
("C") ;
00577      echo
href
("https://r4ds.had.co.nz/",img("hw_r4ds.png","",220)) ;
00578     
fintd() ;
00579     
td
("C") ;
00580      echo
href
("http://adv-r.had.co.nz/",img("hw_advancedR2.png","",200)) ;
00581     
fintd() ;
00582     
fintr() ;
00583     
tr() ;
00584     
td
("C") ;
00585      echo
href
("http://r-pkgs.had.co.nz/","R packages") ;
00586     
fintd() ;
00587     
td
("C") ;
00588      echo
href
("https://r4ds.had.co.nz/","R for datascience") ;
00589     
fintd() ;
00590     
td
("C") ;
00591      echo
href
("http://adv-r.had.co.nz/","Advanced R") ;
00592     
fintd() ;
00593     
fintr() ;
00594     
fintable() ;
00595     
finblockquote() ;
00596     
00597     
00598     
p
("texte") ;
00599     echo
" Les nouveaux op&eacute;rateurs ont pour but de rendre plus lisibles les op&eacute;rations effectu&eacute;es." ;
00600     
finp() ;
00601     
00602     
pre_fichier
("tidyverse1sol.r","cadrejaune") ;
00603     
00604     
p
("texte") ;
00605     echo
" Cela change beaucoup la syntaxe des calculs&nbsp;:" ;
00606     
finp() ;
00607     
00608     
pre_fichier
("tidyverse2.r","cadrebleu") ;
00609     
pre_fichier
("tidyverse2sol.r","cadrejaune") ;
00610     
00611     
00612     
p
("texte") ;
00613     echo
" Pour &eacute;crire sa th&egrave;se avec Rstudio, le mieux est d'utiliser le package "
.hrrp("bookdown")."&nbsp;:" ; ;
00614     
finp() ;
00615     
00616     
table
(0,20) ;
00617     
tr() ;
00618     
00619     
td() ;
00620     
p() ;
00621     
nbsp
(10) ;
00622     
$img
= "bookdown.png" ;
00623     echo
href
("https://bookdown.org/",img($img,"",125)) ;
00624     
finp() ;
00625     
fintd() ;
00626     
00627     
td() ;
00628     
p() ;
00629     
nbsp
(10) ;
00630     
$img
= "bookdown.jpg" ;
00631     echo
href
("https://bookdown.org/yihui/bookdown/",img($img,"",125)) ;
00632     
finp() ;
00633     
fintd() ;
00634     
00635     
fintr() ;
00636     
fintable() ;
00637     
00638     
finsolution() ;
00639     
00640     
finblockquote() ;
00641     
00642     
## -------------------------------------------------------------------------------------------
00643     
00644     
finPageExercices
($numSerie) ; # contient finSection() et finPage() ; la fonction est dans progi.php
00645     
00646     
?>

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)