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ébogagge sous $R" ;
00025 $idr++; $tableauDesRubriques[$idr] = "Packages pour tests en $R" ;
00026 $idr++; $tableauDesRubriques[$idr] = "Comment définit-on des classes d'objets en $R ?" ;
00027 $idr++; $tableauDesRubriques[$idr] = "Comment écrit-on un package $R ?" ;
00028 $idr++; $tableauDesRubriques[$idr] = "Est-il facile de reformater du code $R ?" ;
00029 $idr++; $tableauDesRubriques[$idr] = "Comment implémenter des ".noir("\"reproducible researches\"")." en $R ?" ;
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ébogagge sous $R
00046
00047 ## -------------------------------------------------------------------------------------------
00048
00049 blockquote() ;
00050
00051 blockquote() ;
00052
00053 p("texte") ;
00054 echo "Peut-on facilement débugger du code $R ?" ;
00055 echo " Et le «profiler, le benchmarker» ?" ;
00056 finp() ;
00057
00058 p("texte") ;
00059 echo " Par exemple, est-il plus rapide d'écrire ".b("c(min(v),max(v))")." ou ".b("range(v)")." ?" ;
00060 finp() ;
00061
00062 finblockquote() ;
00063
00064 solution($numExo,$numSerie) ;
00065
00066 p("texte") ;
00067 echo "Si vous ne savez pas répondre à cette question, c'est que vous n'avez pas fait la série précédente d'exercices !" ;
00068 echo " Donc voici quelques mots pour vous rappeler ce qui a été dit à " ;
00069 echo href("progie8.php?solutions=0","la séance 8","grouge")."." ;
00070 finp() ;
00071
00072 p("texte") ;
00073 echo "$R met à 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éboggage est intégré à $rstudio." ;
00092 finp() ;
00093
00094 p("texte") ;
00095 echo "Vous pouvez aussi vous reporter à la séance ".rouge("4")." de nos cours de " ;
00096 echo href("../Programmation_avancee/","Programmation avancé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ésultat est sans appel :" ;
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 ?" ;
00133 echo " Quels packages sont prévus pour cela ? " ;
00134 echo b("Application :") ;
00135 echo " é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ètre, contrairement " ;
00143 echo " à nos fonctions :" ;
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 : " ;
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ètres, ".b("valeur")." et ".b("unité") ;
00178 echo" qui doivent être respectivement un entier non négatif et une chaine de caractères. Voici les tests associés :" ;
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ées mais parfois quand même renvoyées. " ;
00186 echo" Voici les tests associés, nous vous laissons modifier la fonction en consé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ètre, contrairement " ;
00208 echo " à 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é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éfinit des classes d'objets. " ;
00228 echo " Peut-on le faire en $R ?" ;
00229 finp() ;
00230
00231 finblockquote() ;
00232
00233 solution($numExo,$numSerie) ;
00234
00235 p("texte") ;
00236 echo " Oui, bien sûr, il y a même deux langages à objets intégrés à $R, historiquement :" ;
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")." à 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éfé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çaise " ;
00247 echo " existe aussi nommé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à encore, vous pouvez aussi vous reporter à la séance ".rouge("4")." de nos cours de " ;
00254 echo href("../Programmation_avancee/","Programmation avancée avec R","gbleuf")." " ;
00255 echo" pour voir un exemple concret de création d'une classe d'objets." ;
00256 finp() ;
00257
00258 p("texte") ;
00259 echo " Vous trouverez ".href("demoObj1.txt","ici")." la définition des classes " ;
00260 echo " et ".href("demoObj2.r","là")." 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 écrit-on un package $R ?" ;
00273
00274 ## -------------------------------------------------------------------------------------------
00275
00276 blockquote() ;
00277
00278 blockquote() ;
00279
00280 p("texte") ;
00281 echo "Que contient exactement un package $R ?" ;
00282 echo " Est-ce facile d'en écrire un, d'en déposer un au CRAN ?" ;
00283 finp() ;
00284
00285 finblockquote() ;
00286
00287 solution($numExo,$numSerie) ;
00288
00289 p("texte") ;
00290 echo "Un package comporte des fonctions, des données, de l'aide et des exemples. " ;
00291 echo " Sur le principe, ce n'est pas difficile d'écrire un package. Mais c'est un peu fastidieux la première fois. " ;
00292 finp() ;
00293
00294 p("texte") ;
00295 echo "Pour éviter de vous reporter une nouvelle fois à la séance ".rouge("4")." de nos cours de " ;
00296 echo href("../Programmation_avancee/","Programmation avancée avec R","gbleuf")." qui montre l'écriture d'un tout petit package, " ;
00297 echo " nommé ".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é à la question précédente, une fois le package chargé, les fonctions écrites dans le package ont le même statut " ;
00305 echo " que les autres fonctions de $R, elles ont une complé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éez un répertoire nommé ".b("conv")." et décompressez l'archive ".href("conv.zip")." dans ce répertoire. " ;
00341 echo " Dans le répertoire parent de ".b("conv").", exécutez la commande ";
00342 echo ghRouge("R CMD check conv") ;
00343 echo " puis la commande ";
00344 echo ghRouge("R CMD build 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é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 ?" ;
00366
00367 ## -------------------------------------------------------------------------------------------
00368
00369 blockquote() ;
00370
00371 blockquote() ;
00372
00373 p("texte") ;
00374 echo "Certains écrivent du code $R «n'importe comment». " ;
00375 echo " Y a-t-il des règles d'écriture de code $R, des outils pour reformater le code $R ?" ;
00376 finp() ;
00377
00378 finblockquote() ;
00379
00380 solution($numExo,$numSerie) ;
00381
00382 p("texte") ;
00383 echo "Un outil très adapté 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ême style d'é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émenter des ".noir("reproducible researches")." en $R ?" ;
00398
00399 ## -------------------------------------------------------------------------------------------
00400
00401 blockquote() ;
00402
00403 blockquote() ;
00404
00405 p("texte") ;
00406 echo "$R et $rstudio ont un gros problème avec la notion d'environnement : " ;
00407 echo " certaines variables ont été crées \"à 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 ?" ;
00409 echo " Quels outils faut-il utiliser pour faire du ".b("DRY")." (qu'est-ce ?) en $R ?" ;
00410 finp() ;
00411
00412 finblockquote() ;
00413
00414 solution($numExo,$numSerie) ;
00415
00416 p("texte") ;
00417 echo "C'est très simple, il suffit d'utiliser " ;
00418 echo href("http://yihui.name/knitr/","knitr")." qui s'interface très bien avec $rstudio." ;
00419 echo " Le code $R y est exécuté à partir d'un environnement vierge à chaque fois, ce qui peut garantir " ;
00420 echo " la reproductibilité. " ;
00421 finp() ;
00422
00423 p("texte") ;
00424 echo href("http://yihui.name/knitr/","knitr")." est plus général et finalement plus simple à utiliser " ;
00425 echo " que ".href("https://www.statistik.lmu.de/~leisch/Sweave/","Sweave").". " ;
00426 echo " On consultera avec intérêt les ouvrages suivants :" ;
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érification, on pourra reproduire inté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&m=e#livres","ici") ;
00482 echo " ici " ;
00483 echo href("../Programmation_avancee/progr.php?n=1&m=s#livres","là").". " ;
00484 echo " Mais pour la programmation, quels " ;
00485 echo " ouvrages trouve-t-on ?" ;
00486 finp() ;
00487
00488 p("texte") ;
00489 echo " Quels livres de H. Wickham (qui est-ce ?) sont en ligne ?" ;
00490 finp() ;
00491
00492 p("texte") ;
00493 echo " Expliquer ce que font les instructions suivantes écrites en $R pour ".b("tidyverse")."." ;
00494 finp() ;
00495
00496 pre_fichier("tidyverse1.r","cadrebleu") ;
00497
00498 p("texte") ;
00499 echo " Réé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 écrire sa thèse avec Rstudio ?";
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ç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 évolué, notamment en 2017." ;
00516 echo " Nous vous conseillons toujours les trois livres qui suivent, du plus général (Gentleman) au plus spécialisé (Wickman) : " ;
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. Gentleman") ; fintd() ;
00527 td("C") ; echo href("http://nostarch.com/artofr.htm","N. Matloff") ; fintd() ;
00528 td("C") ; echo href("http://http://www.amazon.com/dp/1466586966/ref=cm_sw_su_dp?tag=devtools-20","H. 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éponses, comme ci-dessous :" ;
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 :" ;
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érateurs ont pour but de rendre plus lisibles les opérations effectuées." ;
00600 finp() ;
00601
00602 pre_fichier("tidyverse1sol.r","cadrejaune") ;
00603
00604 p("texte") ;
00605 echo " Cela change beaucoup la syntaxe des calculs :" ;
00606 finp() ;
00607
00608 pre_fichier("tidyverse2.r","cadrebleu") ;
00609 pre_fichier("tidyverse2sol.r","cadrejaune") ;
00610
00611
00612 p("texte") ;
00613 echo " Pour écrire sa thèse avec Rstudio, le mieux est d'utiliser le package ".hrrp("bookdown")." :" ; ;
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 à la page principale de (gH)