Listing du fichier intror1.php
00001 <?php
00002 # # (gH) -_- intror1.php ; TimeStamp (unix) : 24 Mai 2015 vers 13:29
00003
00004 error_reporting(E_ALL | E_NOTICE | E_STRICT) ;
00005
00006 include_once("std7.php") ;
00007 include_once("intror_inc.php") ;
00008 include_once("../../statuno7.php") ;
00009
00010 $numSerie = 1 ;
00011 debutPageExoScr1($numSerie) ;
00012
00013 ## -------------------------------------------------------------------------------------------
00014
00015 sdl(3) ; echo cmt(' pour afficher toutes les solutions : intror1.php?solutions=1') ; sdl(3) ;
00016
00017 ## -------------------------------------------------------------------------------------------
00018
00019 p("texte") ;
00020 echo "" ;
00021 finp() ;
00022 debutSection() ;
00023
00024 $tableauDesRubriques = array() ;
00025 $idr = 0 ;
00026 $idr++; $tableauDesRubriques[$idr] = "Installation et découverte de $R " ;
00027 $idr++; $tableauDesRubriques[$idr] = "Mode interactif, sessions et mode ".em("batch") ;
00028 $idr++; $tableauDesRubriques[$idr] = "Structures de données et affichages" ;
00029 $idr++; $tableauDesRubriques[$idr] = "Lectures de fichiers avec $R" ;
00030 $idr++; $tableauDesRubriques[$idr] = "Calculs simples et manipulations élémentaires en $R" ;
00031 $idr++; $tableauDesRubriques[$idr] = "Documentation et système d'aide" ;
00032 $idr++; $tableauDesRubriques[$idr] = "Fonctions et packages, bioconductor" ;
00033 $idr++; $tableauDesRubriques[$idr] = "Avantages et inconvénients de $R " ;
00034 $idr++; $tableauDesRubriques[$idr] = "Comparaison des différentes interfaces pour $R " ;
00035 $idr++; $tableauDesRubriques[$idr] = "R versus les autres logiciels statistiques " ;
00036 $idr++; $tableauDesRubriques[$idr] = "Cours de $R en ligne et en français" ;
00037 $tdmCRLM = new tdm($tableauDesRubriques) ;
00038 $tdmCRLM->titre() ;
00039 $tdmCRLM->menu("oui","oui","nou") ;
00040
00041 pvide() ;
00042
00043 p() ;
00044 echo "Il est possible d'affintror_inc.phpicher toutes les solutions via ".href("intror1.php?solutions=1","?solutions=1","bouton_fin jaune_pastel nou").". " ;
00045 finp() ;
00046
00047 finSection() ;
00048
00049 debutSection() ;
00050 $numExo = 0 ;
00051
00052 ## -------------------------------------------------------------------------------------------
00053
00054 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Installation et découverte de $R : installation, systèmes d'aide
00055
00056 ## -------------------------------------------------------------------------------------------
00057
00058 blockquote() ;
00059
00060 blockquote() ;
00061
00062 p("texte") ;
00063 echo "Qu'est-ce que le logiciel $R ? " ;
00064 echo "Comment l'installer, sur Windows, MacOs, Linux ? " ;
00065 finp() ;
00066
00067 finblockquote() ;
00068
00069 solution($numExo,$numSerie) ;
00070
00071 p("texte") ;
00072 echo "R est un logiciel statistique général ".b("gratuit").". Il se compose de commandes et d'un langage de programmation. " ;
00073 echo " Ce dernier fournit à $R toute sa richesse : de nombreux utilisateurs et professionnels mettent à disposition sur le Web " ;
00074 echo " leurs données, leurs programmes et des textes d'aides regroupés sous forme de ".em("packages").". Il y avait en août 2013 aux environs de 4750 packages " ;
00075 echo " disponibles, plus de 5400 début avril 2014 et 6685 en mai 2015." ;
00076 finp() ;
00077
00078 p("texte") ;
00079 echo "La liste des packages $R est à l'adresse ".href("http://cran.r-project.org/web/packages/available_packages_by_name.html","available_packages","gbleuf nou").". " ;
00080 echo " Nous verrons plus tard comment nous y retrouver." ;
00081 finp() ;
00082
00083 p("texte") ;
00084 echo "La richesse et la qualité des graphiques produits par $R en font un ".href("intror3.php#graphiques","logiciel de présentation de données","grouge")." incomparable " ;
00085 echo " et non pas uniquement un logiciel statistique." ;
00086 finp() ;
00087
00088 p("texte") ;
00089 echo "R est un logiciel très complet : il permet de traiter aussi bien des données génomiques que médicales, économiques, géographiques, écologiques, biochimiques..." ;
00090 finp() ;
00091
00092 p("texte") ;
00093 echo "De plus le projet ".href("http://www.bioconductor.org/","bioconductor")." qui traite de bioinformatique et de données " ;
00094 echo " génomiques, dont celles issues de " ;
00095 echo href("http://www.bioconductor.org/packages/release/bioc/html/marray.html","puces à ADN") ;
00096 echo " et autres technologies " ;
00097 echo href("http://www.bioconductor.org/packages/release/data/annotation/html/IlluminaHumanMethylation27k.db.html","NGS") ;
00098 echo ", est basé sur $R. Il possède des propres packages, soit en gros " ;
00099 echo " 1500 packages supplémentaires (août 2013), 2150 en 2015. " ;
00100 $bio = "http://www.bioconductor.org/packages/release/BiocViews.html#___Software" ;
00101 echo "La liste complémentaires des packages $R pour bioconductor est à l'adresse ".href($bio,"BiocViews","gvertf").". " ;
00102 finp() ;
00103
00104 p("texte") ;
00105 echo "Pour installer $R, il suffit de se rendre sur le site officiel nommé " ;
00106 echo href("http://cran.r-project.org/","CRAN","gbleuf nou")." et de télécharger l'exécutable correspondant au système d'exploitation souhaité (Windows, MacOs, Unix). " ;
00107 echo " Pour Linux (Ubuntu), une page spéciale explique comment installer $R via " ;
00108 echo href("http://cran.r-project.org/bin/linux/ubuntu/","sudo apt-get","gnoir nou").". " ;
00109 finp() ;
00110
00111
00112 p("texte") ;
00113 echo "Le " ;
00114 echo href("http://cran.r-project.org/","CRAN","gbleuf nou")." est une partie du site officiel de $R nommé ";
00115 echo href("http://www.r-project.org/","R-project","grouge nou")." qui dispose de nombreux sites mirroirs dans le monde entier. " ;
00116 finp() ;
00117
00118 finsolution() ;
00119
00120 finblockquote() ;
00121
00122 ## -------------------------------------------------------------------------------------------
00123
00124 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Mode interactif, sessions et mode batch
00125
00126 ## -------------------------------------------------------------------------------------------
00127
00128 blockquote() ;
00129
00130 blockquote() ;
00131
00132 p("texte") ;
00133 echo "Quel est la différence entre le mode interactif et le mode ".em("batch")." ?" ;
00134 finp() ;
00135
00136 p("texte") ;
00137 echo "Expliquer ce que fait chaque instruction du fichier ci-dessous si l'on exécute dans une session $R. " ;
00138 echo " Les numéros de ligne ne font pas partie des instructions. Il y a des lignes vides. " ;
00139 finp() ;
00140
00141 pre_fichier("session_eno.txt","cadrebleu") ;
00142
00143 finblockquote() ;
00144
00145 solution($numExo,$numSerie) ;
00146
00147 p("texte") ;
00148 echo "Il y a deux mode principaux d'utilisation de $R : le mode interactif et le mode traitement par lots ou ".em("batch").". " ;
00149 echo " En mode interactif, on tape une commande et $R répond. On tape alors une autre commande et $R répond à nouveau, etc. " ;
00150 echo " En mode traitement par lots, on fournit à $R un ensemble de commandes à exécuter et $R les traite les unes à la suite " ;
00151 echo " des autres. Il est aussi possible, en mode interactif, d'exécuter des paquets d'instructions..." ;
00152 finp() ;
00153
00154 p("texte") ;
00155 echo "Les lignes vides ne servent à rien en session interactive puisque $R n'en fait rien. " ;
00156 echo " Par contre en mode batch, cela peut servir à aérer le texte des instructions, des résultats... " ;
00157 finp() ;
00158
00159 p("texte") ;
00160 echo "La ligne 1 réalise une affectation. ".b("1:10")." est la suite des entiers de 1 à 10 et $R met ces " ;
00161 echo " valeurs dans la variable ".b("v").", ce qui en fait un vecteur, dans la terminologie de $R " ;
00162 echo " (il ne s'agit pas exactement de la notion de vecteur comme en mathématique, mais cela y ressemble fortement). " ;
00163 echo " On ne voit rien de plus à l'écran car il s'agit d'une affectation en mémoire. " ;
00164 finp() ;
00165
00166 p("texte") ;
00167 echo "La ligne 2 effectue le calcul de la moyenne arithmétique de v " ;
00168 echo " à l'aide de la fonction ".hrrr("mean","","","gvert nou").". " ;
00169 echo " Comme il n'y a pas d'affectation, en mode interactif, $R affiche le résultat." ;
00170 echo " En mode batch, suivant les options, la moyenne est ou n'est pas affichée. " ;
00171 finp() ;
00172
00173 p("texte") ;
00174 echo "La ligne 4 effectue le calcul de la moyenne arithmétique de v et demande explicitement à $R d'afficher ce résultat." ;
00175 echo " Quel que soit le mode, la moyenne est donc affichée. " ;
00176 finp() ;
00177
00178 p("texte") ;
00179 echo "La ligne 5 effectue le calcul de la moyenne arithmétique de v et les parenthèses forcent $R à afficher ce résultat en mode interactif." ;
00180 echo " C'est plus court à écrire que la ligne 4. " ;
00181 finp() ;
00182
00183 p("texte") ;
00184 echo "La ligne 6 effectue le calcul de la moyenne arithmétique de v et met le résultat dans la variable nommée ".b("meanv").". " ;
00185 echo " Il est conseillé d'utiliser des noms (ou \"identificateurs\") d'au moins 3 lettres et, si possible, explicite. " ;
00186 echo " Dans cette ligne 6, le symbole # (dièse) et ce qui suit est un commentaire et est ignoré par $R. " ;
00187 echo " Il est conseillé de commenter et de documenter son code $R pour pouvoir le relire, comme " ;
00188 echo " par exemple ".b("sdcv <- sum( v*v ) # sdcv = somme des carrés des valeurs").". " ;
00189 finp() ;
00190
00191 p("texte") ;
00192 echo "La ligne 8 effectue le calcul de la moyenne arithmétique tronquée du vecteur indiqué entre parenthèses avec un écrémage de 50 % " ;
00193 echo " (aucune importance si vous ne comprenez pas ce que cela veut dire, c'est juste pour l'exemple, nous y reviendrons). ";
00194 echo " Les deux arguments de la fonction " ;
00195 echo hrrr("mean","","","gvert nou") ;
00196 echo " ont été nommés pour faciliter la lecture de l'instruction. Il aurait été possible d'écrire " ;
00197 echo b("mean( c(1:10,15:18), 0.5 )")." afin d'obtenir le même résultat mais de façon moins compréhensible. " ;
00198 echo b("c(1:10,15:18)")." affectue la concaténation des deux vecteurs ".b("1:10")." et ".b("15:18").", " ;
00199 echo " c'est-à-dire que $R en fait un seul vecteur en les mettant bout à bout. " ;
00200 finp() ;
00201
00202 p("texte") ;
00203 echo "La ligne 9 effectue plusieurs calculs en mémoire sur une même ligne, ce qui n'est pas très conseillé. " ;
00204 echo " La variable x prend la valeur 1, puis y prend la valeur 2 (via le calcul x+1) et enfin x est incrémenté de 3, c'est-à-dire augmenté " ;
00205 echo " de 3. x vaut donc 4. Mais $R n'affiche rien. " ;
00206 finp() ;
00207
00208 p("texte") ;
00209 echo "La ligne 11 permet de quitter $R. Nous avons répondu y pour ".em("yes")." afin de sauvegarder ce que nous avons créé." ;
00210 finp() ;
00211
00212 p("texte") ;
00213 echo "Voici une copie de l'exécution des commandes avec les réponses éventuelles de $R :" ;
00214 finp() ;
00215
00216 pre_fichier("session_sol.txt","cadrejaune") ;
00217
00218 finsolution() ;
00219
00220 finblockquote() ;
00221
00222 ## -------------------------------------------------------------------------------------------
00223
00224 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Structures de données et affichages
00225
00226 ## -------------------------------------------------------------------------------------------
00227
00228 blockquote() ;
00229
00230 blockquote() ;
00231
00232 p("texte") ;
00233 echo " Quelles sont les structures de données en $R ? Comment fait-on pour ne voir que le début des données, ou la fin ?" ;
00234 finp() ;
00235
00236 p("texte") ;
00237 echo " Comment sauvegarder des variables de session ?" ;
00238 finp() ;
00239
00240 finblockquote() ;
00241
00242 solution($numExo,$numSerie) ;
00243
00244 p("texte") ;
00245 echo "Les principales structures de données sont les vecteurs, les matrices, les listes et les ".em("data frames").". " ;
00246 echo " Toutes les variables sont des ".b("objets")." et tout est objet, y compris les fonctions que l'on peut créer." ;
00247 echo " Pour créer une variable, on utilise soit une fonction explicite, comme " ;
00248 echo hrrr("assignOps","","<-","gvert nou").", " ;
00249 echo hrrr("c","","","gvert nou").", " ;
00250 echo hrrr("vector","","","gvert nou")." ou " ;
00251 echo hrrr("matrix","","","gvert nou") ;
00252 echo ", soit une des notations " ;
00253 echo " ou une des conversions automatiques de $R." ;
00254 finp() ;
00255
00256 p("texte") ;
00257 echo "De façon simpliste, un vecteur et une liste ont une longueur alors qu'une matrice et un data frame ont deux dimensions, à savoir le nombre " ;
00258 echo " de lignes (".em("row")." en anglais) et le nombre de colonnes (".em("column")." en anglais). Les fonctions associées sont " ;
00259 echo hrrr("length","","","gvert nou").", " ;
00260 echo hrrr("dim","","","gvert nou").", " ;
00261 echo hrrr("nrow","","","gvert nou")." et " ;
00262 echo hrrr("nrow","base","ncol()","gvert nou").". " ;
00263 finp() ;
00264
00265 p("texte") ;
00266 echo "La fonction " ;
00267 echo hrrr("c","","","gvert nou") ;
00268 echo " permet de concaténer des valeurs pour en faire un vecteur, mais on peut la mémoriser en imaginant que ".hrrr("c","","","gvert nou")." signifie " ;
00269 echo b("construire")." ou ".b("créer").". " ;
00270 echo "La fonction " ;
00271 echo hrrr("rep","","","gvert nou") ;
00272 echo " crée un vecteur par répétition alors que la fonction " ;
00273 echo hrrr("seq","","","gvert nou") ;
00274 echo " produit un vecteur par séquence. La notation ".b(":")." (le symbole deux-points) en est un résumé pour les paramètres standards." ;
00275 finp() ;
00276
00277 p("texte") ;
00278 echo "La notation en crochets droits [ et ] permet de sélectionner des lignes ou des groupes de lignes et des colonnes ou des " ;
00279 echo " groupes de colonnes. La fonction " ;
00280 echo hrrr("head","utils","","gvert nou") ;
00281 echo " affiche le début d'une structure alors que " ;
00282 echo hrrr("head","utils","tail()","gvert nou") ;
00283 echo " en affiche la fin. " ;
00284 finp() ;
00285
00286 p("texte") ;
00287 echo "Voici une démonstration de toutes ces fonctions (vous pouvez copier/coller le texte du cadre bleu pour obtenir ce qu'il y a dans le cadre jaune) :" ;
00288 finp() ;
00289
00290 entree_R("strudon.r") ;
00291 pre_fichier("strudon.txt","cadrejaune") ; # copie de strudon.sor encodage iso
00292
00293 p("texte") ;
00294 echo "Pour sauvegarder des variables de session, on peut utiliser la fonction " ;
00295 echo hrrr("save","","","gvert nou") ;
00296 echo ". " ;
00297 echo " On peut alors restaurer ces variables avec " ;
00298 echo hrrr("load","","","gvert nou") ;
00299 echo ". " ;
00300 echo " Dans de nombreux environnements en mode interactif, toutes les variables courantes sont sauvegardées lorsqu'on quitte $R. " ;
00301 finp() ;
00302
00303 p("texte") ;
00304 echo "Les listes et les ".em("data frame")." seront présentées dans la ".href("intror2.php","demi-journée 2","grouge nou").". " ;
00305 finp() ;
00306
00307 finsolution() ;
00308
00309 finblockquote() ;
00310
00311 ## -------------------------------------------------------------------------------------------
00312
00313 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Lectures de fichiers avec $R
00314
00315 ## -------------------------------------------------------------------------------------------
00316
00317 blockquote() ;
00318
00319 blockquote() ;
00320
00321 p("texte") ;
00322 echo "Comment fait-on pour lire des données dans un fichier ?" ;
00323 echo " Peut-on lire des fichiers sur Internet ?" ;
00324 finp() ;
00325
00326 p("texte") ;
00327 echo "On pourra utiliser les fichiers " ;
00328 echo href("data01.txt") ;
00329 echo ", " ;
00330 echo href("data02.txt") ;
00331 echo ", " ;
00332 echo href("data03.txt") ;
00333 echo ", " ;
00334 echo href("data04.csv") ;
00335 echo " et " ;
00336 echo href("data05.xls") ;
00337 echo " pour tester les lectures, en local comme sur internet. " ;
00338 finp() ;
00339
00340 p("texte") ;
00341 echo em("Questions spécialisées :") ;
00342 finp() ;
00343
00344 blockquote() ;
00345
00346 p("texte") ;
00347 echo "«Je travaille avec le logiciel " ;
00348 echo href("http://www.mothur.org/","mothur") ;
00349 echo ". Puis-je en lire les données avec $R ?»" ;
00350 finp() ;
00351
00352 p("texte") ;
00353 echo "«Moi, j'utilise principalement des séquences Fasta trouvées sur Internet. " ;
00354 echo " Comment les lire avec $R ?" ;
00355 echo " Exemple de données : le fichier " ;
00356 echo href("cl8npnu.fasta"). "». " ;
00357 #echo href("cl8npnu.fasta","???"). " (script Internet). " ;
00358 finp() ;
00359
00360 p("texte") ;
00361 echo "«Moi, je ne m'intéresse qu'à la composition en AA de protéines " ;
00362 echo " stockées sur " ;
00363 echo href("http://www.uniprot.org/","Uniprot") ;
00364 echo " dont je connais l'identifiant, comme par exemple " ;
00365 echo href("http://www.uniprot.org/uniprot/Q75LD9","Q75LD9")."». " ;
00366 finp() ;
00367
00368 p("texte") ;
00369 echo "«Je travaille surtout sur les titres d'articles de " ;
00370 echo href("http://www.ncbi.nlm.nih.gov/pubmed","PubMed").", comme celui-ci, référencé " ;
00371 echo href("http://www.ncbi.nlm.nih.gov/pubmed/11780146?tool=bioconductor","11780146").". Que peut $R pour moi dans ce domaine ?" ;
00372 finp() ;
00373
00374 p("texte") ;
00375 echo "«Comment obtenir la séquence du gène X94991 ?»" ;
00376 finp() ;
00377
00378 finblockquote() ;
00379
00380 finblockquote() ;
00381
00382 solution($numExo,$numSerie) ;
00383
00384 p("texte") ;
00385 echo "Pour lire des données dans un fichier, on utilise la fonction " ;
00386 echo hrrr("read.table","utils","","gvert nou") ;
00387 echo " et les fonctions associées comme " ;
00388 echo hrrr("read.table","utils","read.csv()","gvert nou")." et " ;
00389 echo hrrr("read.xls","gdata","","grouge").". " ;
00390 echo " A l'intérieur d'une session $R, il suffit de taper ";
00391 echo b("help(read.table())") ;
00392 echo " pour avoir la même aide que celle donnée par le lien " ;
00393 echo href("http://finzi.psych.upenn.edu/R/library/utils/html/read.table.html","[...]read.table.html").". " ;
00394 finp() ;
00395
00396
00397 p("texte") ;
00398 echo "Un fichier-texte peut avoir une première ligne spéciale qui contient les noms des colonnes. Il faut alors " ;
00399 echo " utiliser le paramètre ".b("header=TRUE").". Si chaque ligne contient un identifiant de ligne (mot unique), " ;
00400 echo " on peut de plus utiliser le paramètre ".b("row.names").". " ;
00401 finp() ;
00402
00403
00404 p("texte") ;
00405 echo "Voici des exemples de telles lectures. On dispose du fichier suivant nommé ".href("data01.txt") ;
00406 echo " qui contient des distances en kilomètres et des gains en euros et dont le contenu est " ;
00407 finp() ;
00408
00409 pre_fichier("data01.txt","cadre") ;
00410
00411 p("texte") ;
00412 echo "La première ligne n'est pas spéciale et il n'y a pas d'identifiant de ligne. " ;
00413 echo b('read.table("data01.txt")') ;
00414 echo " est donc suffisant. " ;
00415 finp() ;
00416
00417 p("texte") ;
00418 echo "Supposons maintenant que ".href("data02.txt") ;
00419 echo " contient une ligne 1 qui indique le nom des variables (distance et gain) et dont le contenu est " ;
00420 finp() ;
00421
00422 pre_fichier("data02.txt","cadre") ;
00423
00424 p("texte") ;
00425 echo "Il faut donc utiliser " ;
00426 echo b('read.table(file="data02.txt",header=TRUE)') ;
00427 echo ". " ;
00428 finp() ;
00429
00430 p("texte") ;
00431 echo "Enfin, ".href("data03.txt") ;
00432 echo " contient en plus en début de chaque ligne après la première, un identifiant de ligne. " ;
00433 finp() ;
00434
00435 pre_fichier("data03.txt","cadre") ;
00436
00437 p("texte") ;
00438 echo "On écrit alors " ;
00439 echo b('read.table(file="data03.txt",header=TRUE,row.names=1)') ;
00440 echo ". " ;
00441 finp() ;
00442
00443 p("texte") ;
00444 echo "Pour lire un fichier ".b(".csv")." comme ".href("data04.csv")." dont le contenu est " ;
00445 finp() ;
00446
00447 pre_fichier("data04.csv","cadre") ;
00448
00449 p("texte") ;
00450 echo "on écrit ".b('read.csv("data04.csv")') ;
00451 echo ". " ;
00452 finp() ;
00453
00454
00455 p("texte") ;
00456 echo "Les fonctions " ;
00457 echo b("read.table()") ;
00458 echo " et " ;
00459 echo b("read.csv()") ;
00460 echo " font partie du package ".b("utils")." qui est chargé automatiquement avec $R. " ;
00461 echo " Par contre pour " ;
00462 echo b("read.xls()") ;
00463 echo " qui fait partie du package ".hrrp("gdata")." et qui n'est pas chargé automatiquement avec $R, " ;
00464 echo " il faut installer le package (une fois pour toutes) et charger (à chaque session) le package avec " ;
00465 echo hrrr("library","","","gbleuf") ;
00466 echo " avant de pouvoir l'utiliser. On pourra le vérifier avec la lecture de ".href("data05.xls").". " ;
00467 echo " On peut aussi utiliser le package ".hrrp("XLConnect")." avec ses fonctions " ;
00468 echo hrrr("loadWorkbook","XLConnect")." et " ;
00469 echo hrrr("/readWorksheet-methods","XLConnect","readWorksheet()")." mais on ne peut lire que des fichiers locaux. Ce package " ;
00470 echo hrrp("XLConnect")." est utilisé par ". hrrp("Rcmdr").". " ;
00471
00472 finp() ;
00473
00474 p("texte") ;
00475 echo "Il est d'usage d'affecter à une variable le résultat de la lecture, comme le montrent les instructions de l'extrait " ;
00476 echo " de session $R suivant. Toutes ces fonctions $R renvoient un ".em("data frame")." " ;
00477 echo " qui ressemble \"un peu\" à une matrice." ;
00478 finp() ;
00479
00480 pre_fichier("datas.sor","cadrejaune") ;
00481
00482 p("texte") ;
00483 echo "Si on veut exécuter les instructions des lignes d'un fichier comme ".href("essai_r.txt","essai.r") ;
00484 echo " il faut utiliser la fonction " ;
00485 echo b("source()") ;
00486 echo " avec peut-être le paramètre ".b('encoding')." pour gérer les accents, soit le plus souvent " ;
00487 echo b('encoding="latin1"')."." ;
00488 finp() ;
00489
00490 pre_fichier("essai.r","cadre") ;
00491
00492 pre_fichier("accents.sor","cadrejaune") ;
00493
00494 p("texte") ;
00495 echo em("Réponses aux questions spécialisées :") ;
00496 finp() ;
00497
00498 p("texte") ;
00499 echo "Pour " ;
00500 echo href("http://www.mothur.org/","mothur") ;
00501 echo " il y a une fonction " ;
00502 echo b("import_mothur") ;
00503 echo " dans le package nommé " ;
00504 echo href("https://www.bioconductor.org/packages/release/bioc/html/phyloseq.html","phyloseq") ;
00505 echo "." ;
00506 finp() ;
00507
00508 p("texte") ;
00509 echo "Pour lire des séquences Fasta, il n'y a que l'embarras du choix. Voici par exemple comment faire avec " ;
00510 echo " la fonction " ;
00511 echo b("readAAStringSet()") ;
00512 echo " du package " ;
00513 echo href("http://bioconductor.org/packages/release/bioc/html/Biostrings.html","Biostrings") ;
00514 echo " de " ;
00515 echo href("http://www.bioconductor.org/packages/release/bioc/html/Biostrings.html","Bioconductor","gvert nou") ;
00516 echo " puis avec la fonction " ;
00517 echo hrrr("read.fasta","seqinr") ;
00518 echo " du package " ;
00519 echo hrrp("seqinr") ;
00520 echo " avant d'utiliser " ;
00521 echo " la fonction " ;
00522 echo b("read.fasta()") ;
00523 echo " du package " ;
00524 echo href("https://www.bioconductor.org/packages/release/bioc/html/muscle.html","muscle") ;
00525 echo "." ;
00526 finp() ;
00527
00528 pre_fichier("read_fasta_sor.txt","cadrejaune") ;
00529
00530 p("texte") ;
00531 echo "Pour obtenir les séquences Fasta de protéines (ou leur composition en AA) dont on connait l'identifiant " ;
00532 echo href("http://www.uniprot.org/","Uniprot").", là aussi, il n'y a que l'embarras du choix. Voici par exemple comment faire avec " ;
00533 echo " la fonction " ;
00534 echo hrrr("getUniProt","protr") ;
00535 echo " du package " ;
00536 echo hrrp("protr") ;
00537 echo " puis avec la fonction " ;
00538 echo hrrr("util.fasta","CHNOSZ","") ;
00539 echo " du package " ;
00540 echo hrrp("CHNOSZ") ;
00541 echo ". Il y aussi une fonction " ;
00542 echo hrrr("util.fasta","CHNOSZ","read.fasta()") ;
00543 echo " dans ce package. " ;
00544 finp() ;
00545
00546 pre_fichier("uniprot_sor.txt","cadrejaune") ;
00547
00548 p("texte") ;
00549 echo "Via " ;
00550 echo href("http://www.bioconductor.org","Bioconductor","grouge") ;
00551 echo " il est possible de consulter et d'interroger facilement " ;
00552 echo href("http://www.ncbi.nlm.nih.gov/pubmed","PubMed").", notamment avec le package " ;
00553 echo href("https://bioconductor.org/packages/release/bioc/html/annotate.html","annotate") ;
00554 echo " et sa fonction " ;
00555 echo b("pubmed").". " ;
00556 echo " Voici un exemple d'utilisation :" ;
00557 finp() ;
00558
00559 entree_R("pubmed.r") ;
00560 sortie_R("pubmed_sor.txt") ;
00561
00562 p("texte") ;
00563 echo "La page ouverte en automatique par le navigateur est " ;
00564 $url = "http://www.ncbi.nlm.nih.gov/pubmed/11780146%2C11886385%2C11884611?tool=bioconductor" ;
00565 echo href($url,"[...]pubmed/11780146%2C[...]") ;
00566 echo "." ;
00567 finp() ;
00568
00569 p("texte") ;
00570 echo " Pour rapatrier la séquence du gène X94991, le plus simple est sans doute " ;
00571 echo " d'utiliser la fonction " ;
00572 echo href("http://finzi.psych.upenn.edu/R/library/ape/html/read.GenBank.html","read.GenBank") ;
00573 echo " du package ".href("http://finzi.psych.upenn.edu/R/library/ape/html/00Index.html","ape")." (avec un " ;
00574 echo " jeu de mots sur l'acronyme du package qui est mis pour " ;
00575 echo b(" Analyses of Phylogenetics and Evolution").") : " ;
00576 finp() ;
00577
00578 entree_R("geneX9.r") ;
00579 sortie_R("geneX9.sor") ;
00580
00581 p("texte") ;
00582 echo b("Remarque :")." X94991 est décrit au NCBI par " ;
00583 echo href("http://www.ncbi.nlm.nih.gov/nuccore/X94991","GI:1155087") ;
00584 echo " et semble donc être relié à la " ;
00585 echo href("https://www.wikigenes.org/e/gene/e/7791.html","zyxine").". " ;
00586 finp() ;
00587
00588 finsolution() ;
00589
00590 finblockquote() ;
00591
00592 ## -------------------------------------------------------------------------------------------
00593
00594 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Calculs simples et manipulations élémentaires en $R
00595
00596 ## -------------------------------------------------------------------------------------------
00597
00598 blockquote() ;
00599
00600 blockquote() ;
00601
00602 p("texte") ;
00603 echo " Comment créer des variables, les lister, les supprimer ?" ;
00604 echo " Comment convertir des données, par exemple de pouces en cm ?" ;
00605 echo " Comment recoder, par exemple avec la valeur 0 pour moins de 10 et 1 sinon ?" ;
00606 echo " Et pour trier des données ?" ;
00607 echo "" ;
00608 finp() ;
00609
00610 finblockquote() ;
00611
00612 solution($numExo,$numSerie) ;
00613
00614 p("texte") ;
00615 echo "Pour créer une variable, il suffit de lui affecter une valeur. Ainsi ".b("x <- 3")." crée la variable ".b("x") ;
00616 echo " et lui affecte la valeur 3. Si ".b("x")." existait déjà, son ancien contenu est perdu et remplacé par 3." ;
00617 echo " $R n'est pas vraiment ".b("typé explicitement")." dans la mesure où ".b("x")." peut changer de type, par exemple passer de " ;
00618 echo " nombre à chaine de caractères, sans que cela ne pose de problème." ;
00619 finp() ;
00620
00621
00622 p("texte") ;
00623 echo "Pour supprimer la variable x, on utilise la fonction " ;
00624 echo hrrr("rm","","","gvert nou").". " ;
00625 echo "On exécute donc ".b("rm(x)").". ".em("rm")." signifie ".em("remove").". " ;
00626 echo "Pour connaitre la liste de toutes les variables, on peut taper " ;
00627 echo hrrr("ls","","","gvert nou") ;
00628 echo " ou " ;
00629 echo hrrr("ls_str","utils","ls.str()","gvert nou").". " ;
00630 echo "La fonction ".hrrr("ls","","","gvert nou")." " ;
00631 echo " liste les variables, d'où son abbréviation en ".b("ls")." " ;
00632 echo " alors que ".b("ls.str()")." essaie d'afficher les valeurs en chaine (string en anglais). " ;
00633 echo " Il faut donc être très prudent(e) avec ".b("rm(list=ls())")." car cela supprime toutes les variables courantes. " ;
00634 echo href("http://www.rstudio.com/ide/","Rstudio","grouge")." fournit et maintient la liste des variables courantes dans une fenêtre séparée." ;
00635 finp() ;
00636
00637 p("texte") ;
00638 echo "Pour effectuer un calcul en $R, il faut utiliser la syntaxe des informaticiens : * pour la multiplication, " ;
00639 echo " / pour la division, ** pour la puissance, mettre des parenthèses pour les noms de fonctions comme log(), sinus()..." ;
00640 echo " Comme $R est ".b("vectoriel").", de nombreux calculs sont automatiquement réalisés sur chacun des éléments des vecteurs " ;
00641 echo " ou de la matrice. Par exemple :" ;
00642 finp() ;
00643
00644 pre_fichier("calculs_sor.txt","cadrejaune") ;
00645
00646 p("texte") ;
00647 echo "Pour ajouter des valeurs à un vecteur, on peut utiliser la fonction " ;
00648 echo hrrr("c","","","gvert nou").". " ;
00649 echo "Pour ajouter des valeurs à une matrice, on utilise les fonctions " ;
00650 echo hrrr("cbind","","","gvert nou") ;
00651 echo " et " ;
00652 echo hrrr("cbind","","rbind()","gvert nou") ;
00653 echo " mais il vaut mieux passer par " ;
00654 echo hrrr("transform","","","gvert nou") ;
00655 echo " pour compléter un data frame." ;
00656 echo " Via la fonction " ;
00657 echo hrrr("ifelse","","","gvert nou") ;
00658 echo " on peut réaliser des recodages simples. " ;
00659 echo " Voici un exemple de telles manipulations." ;
00660 finp() ;
00661
00662 pre_fichier("transforme_sor.txt","cadrejaune") ;
00663
00664 p("texte") ;
00665 echo "On peut trier explicitement des données avec la fonction " ;
00666 echo hrrr("sort","","","gvert nou") ;
00667 echo " mais pour trier dans des structures, on a souvent recours à la fonction " ;
00668 echo hrrr("order","","","gvert nou")." :" ;
00669 finp() ;
00670
00671 pre_fichier("tris_sor.txt","cadrejaune") ;
00672
00673 finsolution() ;
00674
00675 finblockquote() ;
00676
00677 ## -------------------------------------------------------------------------------------------
00678
00679 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Documentation et système d'aide
00680
00681 ## -------------------------------------------------------------------------------------------
00682
00683 blockquote() ;
00684
00685 blockquote() ;
00686
00687 p("texte") ;
00688 echo "Comment apprendre à utiliser le logiciel $R ? " ;
00689 finp() ;
00690
00691 p("texte") ;
00692 echo "Où et comment obtenir de l'aide et de la documentation pour le logiciel $R ? " ;
00693 finp() ;
00694
00695 finblockquote() ;
00696
00697 solution($numExo,$numSerie) ;
00698
00699 p("texte") ;
00700 echo "Le ".href("http://www.r-project.org/","site officiel de R","grouge nou")." a une rubrique " ;
00701 echo href("http://cran.r-project.org/manuals.html","manuals","gbleuf nou")." avec des manuels en anglais. " ;
00702 echo " Heureusement, ces documents sont traduits dans plusieurs langues et chaque pays contribue à la " ;
00703 echo " documentation générale dans la section ".href("http://cran.r-project.org/other-docs.html","Contributed Documentation","gbleuf nou").". " ;
00704 sdl() ;
00705 echo " De plus, il y a aujourd'hui (2013) de nombreux ouvrages généraux et aussi spécialisés sur $R, notamment chez Springer avec les séries " ;
00706 echo href("http://www.springer.com/series/6991?detailsPage=titles","Use R!","gbleuf nou")." et " ;
00707 echo href("http://www.springer.com/series/8770?detailsPage=titles","Pratique R","gbleuf nou").". " ;
00708 echo " Voir par exemple nos pages ".href("../Programmation_R/Programmation_avancee/progr.php?n=1&m=e#livres","livres sur R")." et " ;
00709 echo " ".href("../Programmation_R/Programmation_avancee/progr.php?n=1&m=s#ouvrages","ouvrages pour R").". " ;
00710
00711 finp() ;
00712
00713 p("texte") ;
00714 echo "A l'intérieur de $R, en mode interactif, on utilise la fonction ".b("help(f)")." pour avoir de l'aide sur la fonction ".b("f") ;
00715 echo " et ".b("example(f)")." pour voir des exemples d'utilisation. Ainsi ".b("help(median)")." montre les paramètres de la fonction ".b("median()") ;
00716 echo " tandis que ".b("example(lm)")." montre la fonction ".b("lm()")." en action. " ;
00717 echo " L'aide par défaut s'affiche dans une fenêtre surgissante, mais si on tape ".b("help.start()")." tout appel de l'aide s'affiche dans le navigateur. " ;
00718 finp() ;
00719
00720 p("texte") ;
00721 echo "On trouve aussi des vidéos sur YouTube notamment qui montrent comment utiliser le logiciel $R. Il faut chercher " ;
00722 echo b("R software")." et non pas seulement ".b("R").". " ;
00723 sdl() ;
00724 echo "Des sites comme " ; echo href("http://finzi.psych.upenn.edu/nmz.html","R Site Search","grouge nou")." et " ;
00725 echo href("http://www.rseek.org/","R seek","grouge nou")." sont également utiles. Nous conseillons à la " ;
00726 echo href("../Programmation_R/Programmation_avancee/progr.php?n=1&m=s#duclert","solution de la question S1q13","gvertf nou")." d'autres sites français et anglais " ;
00727 echo " dont le site français ".href("http://www.duclert.org/Aide-memoire-R/Le-langage/Introduction.php","duclert").". " ;
00728 finp() ;
00729
00730
00731 p("texte") ;
00732 echo "Comme $R est très complet et très riche en fonctions, on apprend en général $R au fur et à mesure de ses " ;
00733 echo " besoins. Comme chaque package a ses propres fonctions, il n'est pas possible de connaitre $R entièrement. " ;
00734 echo " On estime généralement qu'en connaissant une petite centaine de fonctions générales, " ;
00735 echo " on arrive à réaliser la plupart des opérations courantes en $R." ;
00736 finp() ;
00737
00738 p("texte") ;
00739 echo "Dans une session $R, en plus de " ;
00740 echo hrrr("help","utils","","gvert nou")." " ;
00741 echo " et ".b("?")." (un point d'interrogation), on peut aussi utiliser " ;
00742 echo hrrr("apropos","utils","","gvert nou")." " ;
00743 echo " et ".b("??")." (deux points d'interrogation)." ;
00744 finp() ;
00745
00746 finsolution() ;
00747
00748 finblockquote() ;
00749
00750 ## -------------------------------------------------------------------------------------------
00751
00752 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Fonctions et packages, bioconductor
00753
00754 ## -------------------------------------------------------------------------------------------
00755
00756 blockquote() ;
00757
00758 blockquote() ;
00759
00760 p("texte") ;
00761 echo "Qu'est-ce qu'un package en $R ?" ;
00762 echo " Comment s'y retrouver ?" ;
00763 echo " Comment installer, charger, dé-charger un package ?" ;
00764 echo " Quels sont les principaux packages ?" ;
00765 echo " Comment installer un package dans environnement contraint, par exemple si on'a pas le droit, comme à la fac, " ;
00766 echo" d'écrire dans le répertoire de $R ?" ;
00767 echo " Qu'est-ce que Bioconductor ?" ;
00768 finp() ;
00769
00770 finblockquote() ;
00771
00772 solution($numExo,$numSerie) ;
00773
00774 p("texte") ;
00775 echo "Un package est un ensemble de fonctions, de données, de textes d'aide et d'exemples d'utilisation. " ;
00776 echo " Compte-tenu du grand nombre (plusieurs milliers) de packages, il faut en général passer par les " ;
00777 echo href("http://cran.r-project.org/","task views")." du " ;
00778 echo href("http://cran.r-project.org/","CRAN") ;
00779 echo " ou utiliser un système de recherche comme " ;
00780 echo href("http://finzi.psych.upenn.edu/nmz.html","R Site Search") ;
00781 echo " pour trouver ce qu'on cherche. " ;
00782 echo " Il est également possible de chercher \"à l'aveuglette\" un mot particulier dans la " ;
00783 echo href("http://cran.r-project.org/web/packages/available_packages_by_name.html","liste longue des packages") ;
00784 echo ". " ;
00785 finp() ;
00786
00787 p("texte") ;
00788 echo "On installe un package à l'aide la fonction " ;
00789 echo hrrr("install.packages","utils") ;
00790 echo " et on le charge par ";
00791 echo hrrr("library").". ";
00792 echo " Il n'est pas obligatoire (sauf en cas de conflit avec d'autres packages) de l'enlever de la " ;
00793 echo " mémoire, car $R ne garde pas trace des packages chargés d'une session à l'autre. Si on doit vraiment " ;
00794 echo " le dé-charger de la mémoire, on utilise " ;
00795 echo hrrr("detach").". ";
00796 echo " Dans un environnement contraint, il faut utiliser le paramètre ".b("lib")." pour spécifier un " ;
00797 echo " emplacement local accessible en écriture. Voir par exemple notre ";
00798 echo href("../r_alafac.php",s_span("note locale","bleu"))." sur $R." ;
00799 finp() ;
00800
00801 p("texte") ;
00802 echo "Pour connaitre la liste des jeux de données fournis avec un package, il faut utiliser la fonction " ;
00803 echo hrrr("data","utils")." alors que la liste de tous les objets du package est obtenue via ";
00804 echo hrrr("ls").". ";
00805 echo " Signalons que ".b('help(package="nom_package")')." fournit la page index de l'aide et que " ;
00806 echo b("vignette(\"nom_package\")")." affiche le PDF associé lorsqu'il existe." ;
00807 finp() ;
00808
00809 p("texte") ;
00810 echo "Voici un exemple d'utilisation de ces fonctions :" ;
00811 finp() ;
00812
00813 pre_fichier("pkgs_sor.txt","cadrejaune") ;
00814
00815 p("texte") ;
00816 echo " Au risque de choquer ou de surprendre, il n'y a pas de package principal ou plus important qu'un autre. " ;
00817 echo " Il y a des packages essentiels, chargés dès l'invocation de $R, comme " ;
00818 echo hrrp("base").", " ;
00819 echo hrrp("stats").", " ;
00820 echo hrrp("graphics").", " ;
00821 echo hrrp("grDevices").", " ;
00822 echo hrrp("utils").", " ;
00823 echo hrrp("datasets")." et " ;
00824 echo hrrp("methods").", " ;
00825 echo " mais aucun package n'est plus important qu'un autre. Tout dépend de ce que l'on doit réaliser comme tâche." ;
00826 finp() ;
00827
00828 p("texte") ;
00829 echo "Bioconductor, dont l'adresse est ".href("http://www.bioconductor.org/")." est un site qui fournit des " ;
00830 echo em("library")." $R orientées analyse bioinformatique, puces à ADN et autres technologies NGS. " ;
00831 echo "On y trouve par exemple les bibliothèques telle que Affy ou Biobase qui étaient très utilisées dans l'analyse statistique " ;
00832 echo " de ces puces à ADN dans les années 2000. Aujourd'hui (2014), on y trouve des librairies pour " ;
00833 echo href("http://www.illumina.com/systems/miseq.ilmn","miseq").", " ;
00834 echo href("http://en.wikipedia.org/wiki/RNA-Seq","RNA-Seq").", " ;
00835 echo href("http://www.illumina.com/","illumina")."... " ;
00836 finp() ;
00837
00838 p("texte") ;
00839 echo "Bioconductor fonctionne séparément du CRAN et a son propre système d'installation de packages. " ;
00840 echo " En mars 2014, Bioconductor comptait plus de 1600 packages, répartis en environ 750 packages de programmes, " ;
00841 echo " 700 packages de données d'annotations et 180 packages de données expérimentales. " ;
00842 echo " Pour utiliser Bioconductor, il faut écrire : " ;
00843 finp() ;
00844
00845 pre_fichier("bioclite.r","cadre") ;
00846
00847 p("texte") ;
00848 echo " Ceci installe les packages élémentaires de Bioconductor, dont " ;
00849 echo href("http://www.bioconductor.org/packages/release/bioc/html/Biobase.html","Biobase").". " ;
00850 finp() ;
00851
00852 p("texte") ;
00853 echo " Pour installer un package, par exemple " ;
00854 echo href("http://www.bioconductor.org/packages/release/bioc/html/illuminaio.html","illuminaio") ;
00855 echo " avec Bioconductor, il faut écrire" ;
00856 finp() ;
00857
00858 pre_fichier("biocinstall.r","cadre") ;
00859
00860 p("texte") ;
00861 echo " Comme tout package $R, les packages $R de Bioconductor ont leur fichier PDF d'aide (ou \"vignette\"), mais pas toujours de jeux " ;
00862 echo " de données, car ceux-ci sont souvent gros et téléchargeables via des packages spécialisés. " ;
00863 echo " Compte-tenu de l'évolution rapide des technologies et des méthodes associées, il y a aussi souvent en plus un " ;
00864 echo " tutoriel sur l'utilisation du package. " ;
00865 finp() ;
00866
00867 p("texte") ;
00868 echo " Il est clair que le nombre important de packages dans Bioconductor rend impossible la maitrise de l'ensemble des packages. " ;
00869 echo " C'est pourquoi on trouve peu d'ouvrages comme ceux présentés ci-dessous " ;
00870 echo " mais plutôt des articles citant ou utilisant ces packages." ;
00871 finp() ;
00872
00873 $book1 = "http://www.springer.com/statistics/life+sciences%2C+medicine+%26+health/book/978-0-387-77239-4" ;
00874 $book2 = "http://www.springer.com/computer/bioinformatics/book/978-0-387-25146-2" ;
00875
00876 blockquote() ;
00877 table(0,20,"collapse") ;
00878
00879 tr() ;
00880 td("C") ; echo href($book1,img("biocase.jpg","",145)) ; fintd() ;
00881 td("C") ; echo href($book2,img("bioinfo.jpg","",145)) ; fintd() ;
00882 fintr() ;
00883
00884 tr() ;
00885 td("C") ; echo href($book1,"Bioconductor Case Studies")." (2008)" ; fintd() ;
00886 td("C") ; echo href($book2,"Bioinformatics[...] using R[...]")." (2005)" ; fintd() ;
00887 fintr() ;
00888
00889 fintable() ;
00890 finblockquote() ;
00891
00892
00893
00894 p("texte") ;
00895 echo "Pour une introduction rapide à Bioconductor et des exemples d'analyses avec Bioconductor, on pourra " ;
00896 echo " notamment lire " ;
00897 echo " en anglais " ;
00898 echo href("https://projets.pasteur.fr/attachments/788/Bioconductor-tutorial.pdf","Bioconductor-tutorial.pdf") ;
00899 echo " et, en français, " ;
00900 echo href("http://biologie.univ-mrs.fr/upload/p245/TP_Affy.pdf","TP_Affy.pdf") ;
00901 echo " disponibles " ;
00902 echo href("Bioconductor-tutorial.pdf","ici") ;
00903 echo " et " ;
00904 echo href("TP_Affy.pdf","là") ;
00905 echo " en version locale. " ;
00906 echo " Pour une introduction aux statistiques simples et avancées en bioinformatique, nous vous conseillons au passage soit le document " ;
00907 echo href("http://cran.r-project.org/doc/contrib/Krijnen-IntroBioInfStatistics.pdf","Krijnen") ;
00908 echo " du ".href("http://cran.r-project.org/","CRAN")." (".href("Krijnen-IntroBioInfStatistics.pdf","copie locale","gbleuf nou").") " ;
00909 echo " soit le document " ;
00910 echo href("http://media.readthedocs.org/pdf/a-little-book-of-r-for-bioinformatics/latest/a-little-book-of-r-for-bioinformatics.pdf","little-rbio") ;
00911 echo " (".href("a-little-book-of-r-for-bioinformatics.pdf","copie locale","gbleuf nou")."). " ;
00912 finp() ;
00913
00914
00915 /*
00916 Bioconductor est un dépôt de bibliothèques $R orientées analyse bioinformatique et puces à ADN, on y retrouve les bibliothèque telle que Affy ou Biobase qui sont très utilisé dans l'analyse statistique de ces dites puces à ADN. Dans cette nouvelle version de Bioconductor compilé pour $R 2.6 vous trouverez un certain nombres de nouveautées dans les bibliothèque précédement proposées mais aussi un certain nombre de nouvelles.
00917
00918 http://biologie.univ-mrs.fr/upload/p245/TP_Affy.pdf
00919 https://projets.pasteur.fr/attachments/788/Bioconductor-tutorial.pdf
00920 Projet pour l'analyse et la compréhension des données génomiques.
00921 */
00922
00923
00924 finsolution() ;
00925
00926 finblockquote() ;
00927
00928 ## -------------------------------------------------------------------------------------------
00929
00930 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Avantages et inconvénients de $R
00931
00932 ## -------------------------------------------------------------------------------------------
00933
00934 blockquote() ;
00935
00936 blockquote() ;
00937
00938 p("texte") ;
00939 echo "Quels sont les avantages (les points forts) de $R ?" ;
00940 finp() ;
00941
00942 p("texte") ;
00943 echo "Et ses inconvénients (ses points faibles) ?" ;
00944 finp() ;
00945
00946 finblockquote() ;
00947
00948 solution($numExo,$numSerie) ;
00949
00950 p("texte") ;
00951 echo "Les plus grands points forts de $R sont sa gratuité et le fait qu'il soit très complet. Les autres grands logiciels statistiques comme " ;
00952 echo "SAS" ;
00953 echo " ou " ;
00954 echo " Statistica" ;
00955 echo " sont payants et encore : on ne les achète pas, on les loue pour quelques centaines d'euros par an et par ordinateur, " ;
00956 echo " soit au final un coût très élevé. De plus ils ne couvrent pas tous les domaines scientifiques récents où on " ;
00957 echo " a besoin des statistiques, notamment la bioinformatique." ;
00958 finp() ;
00959
00960
00961 p("texte") ;
00962 echo "Un autre point fort de $R est sa modularité. On apprend au fur et à mesure car la plupart des packages sont indépendants." ;
00963 finp() ;
00964
00965 p("texte") ;
00966 echo "La facilité d'utilisation est à la fois un avantage et un inconvénient. Il est instantané " ;
00967 echo " d'utiliser la fonction " ;
00968 echo hrrr("mean")." ";
00969 echo " et la fonction " ;
00970 echo hrrr("median","stats")." ";
00971 echo " pour calculer respectivement la moyenne et la médiane d'une série de valeurs, mais comment savoir laquelle il faut " ;
00972 echo " vraiment utiliser ? De la même façon, toute méthode complexe ou simplement récente est disponible mais comme " ;
00973 echo " pour un menu dans un logiciel, il n'y a pas de recul conceptuel fourni, juste une ressource disponible, sauf à s'astreindre à lire l'aide." ;
00974 finp() ;
00975
00976 p("texte") ;
00977 echo "La grande richesse des packages est aussi à la fois un avantage et un inconvénient. Nous avons vu par exemple précédemment " ;
00978 echo " au moins trois façons de lire des séquences Fasta avec des packages différents. Devant la multitude, il est souvent " ;
00979 echo " difficile de choisir." ;
00980 finp() ;
00981
00982 div("pluspetit") ;
00983 pre_fichier("dna_search.txt","cadrejaune") ;
00984 findiv() ;
00985
00986 p("texte") ;
00987 echo "La syntaxe de $R est simple mais technique et le nombre de paramètres à utiliser est un frein à la compréhension. ";
00988 echo " Heureusement, les valeurs par défaut simplifient l'utilisation." ;
00989 finp() ;
00990
00991 pre_fichier("parms.txt","cadrejaune") ;
00992
00993 p("texte") ;
00994 echo "La syntaxe de $R est simple, donc les calculs complexes peuvent se faire pas à pas " ;
00995 echo " à condition de \"bien écrire\" les instructions." ;
00996 finp() ;
00997
00998 pre_fichier("bienecrire.txt","cadrebleu") ;
00999
01000 p("texte") ;
01001 echo "R est un langage puissant, concis et fonctionnel orienté traitement statistique, c'est pour cela qu'il est plus adapté que " ;
01002 echo " perl, php, python ou ruby pour réaliser des analyses statistiques. " ;
01003 finp() ;
01004
01005 pre_fichier("applys.txt","cadrebleu") ;
01006
01007 p("texte") ;
01008 echo "R est orienté, entre autres, bioinformatique :" ;
01009 finp() ;
01010
01011 div("pluspetit") ;
01012 pre_fichier("ncbi.txt","cadrejaune") ;
01013 findiv() ;
01014
01015 p("texte") ;
01016 echo "Comme inconvénient de $R, il ne faut pas oublier de citer, comme en C, le problème de dépendance entre packages. " ;
01017 echo " Certains packages ont besoin d'autres packages pour fonctionner, voire de programmes C, Fortran, de compilateurs... " ;
01018 echo " pour être installés correctement. Il est donc conseillé d'utiliser le paramètre ".b("dependencies=TRUE")." de la commande " ;
01019 echo hrrr("install.packages","utils","","gvert nou") ;
01020 echo " du package ".hrrp("utils").". " ;
01021 finp() ;
01022
01023 p("texte") ;
01024 echo "Un dernier inconvénient de $R est l'hétérogénéité (parfois) de certaines syntaxes. " ;
01025 echo " Ainsi, il faut écrire ".b('help(package="gdata")') ;
01026 echo " mais ".b('ls("package:gdata")')." et " ;
01027 echo " ".b('detach("package:gdata")')." ; de même pour " ;
01028 echo b("lapply(X=lst,FUN=nchar)").", " ;
01029 echo b("sapply(X=lst,FUN=nchar)")." et " ;
01030 echo b("rapply(object=lst,f=nchar)").". " ;
01031 finp() ;
01032
01033 p("texte") ;
01034 echo "Par contre la richesse de la syntaxe permet d'utiliser différents contextes :" ;
01035 finp() ;
01036
01037 pre_fichier("accesdf.txt","cadre") ;
01038
01039 finsolution() ;
01040
01041 finblockquote() ;
01042
01043 ## -------------------------------------------------------------------------------------------
01044
01045 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Comparaison des différentes interfaces pour $R
01046
01047 ## -------------------------------------------------------------------------------------------
01048
01049 blockquote() ;
01050
01051 blockquote() ;
01052
01053 p("texte") ;
01054 echo " Quelles sont les différentes interfaces pour utiliser $R ?" ;
01055 finp() ;
01056
01057 p("texte") ;
01058 echo " Lesquelles fournissent ".em("«juste un environnement de session»")." ?" ;
01059 finp() ;
01060
01061 p("texte") ;
01062 echo " Lesquelles sont dédiées aux analyses statistiques ?" ;
01063 finp() ;
01064 finblockquote() ;
01065
01066 solution($numExo,$numSerie) ;
01067
01068
01069 p("texte") ;
01070 echo "Pour les commandes et les sessions $R, il y a une interface minimale sans menu ni multi-fenétrage qui s'obtient via " ;
01071 echo b("R") ;
01072 echo " sous Linux et via " ;
01073 echo b("rterm.exe") ;
01074 echo " sous Windows. " ;
01075 echo "Une interface un peu plus élaborée avec menu et multi-fenétrage est disponible via " ;
01076 echo b("R -g X11") ;
01077 echo " et " ;
01078 echo b("R -g tk") ;
01079 echo " sous Linux et via " ;
01080 echo b("rgui.exe") ;
01081 echo " sous Windows. " ;
01082 echo " Toutefois, nous conseillons d'utiliser plutôt ".href("http://www.rstudio.com/","Rstudio","gbleuf nou") ;
01083 echo " qui est gratuit, lui aussi et disponible pour tous les systèmes d'exploitation. " ;
01084 echo " Voir la ".href("../r_alafac.php","la rubrique «Avantages et inconvénients de l'interface standard (IS) et de l'interface de RStudio (RS)»","gvertf nou") ;
01085 echo " de la note locale sur $R pour comprendre pourquoi Rstudio est plus adapté à une utilisation régulière " ;
01086 echo " et surtout pourquoi il est le seul à permettre une production automatisée des rapports et articles. " ;
01087 echo " Ces interfaces fournissent ".em("«juste un environnement de session»").", ce qui signifie qu'elles n'aident en aucun cas " ;
01088 echo " à réaliser des analyses statistiques via les menus. Par contre, elles permettent, plus ou moins bien, de visualiser les données, " ;
01089 echo " de changer de répertoire, de sauvegarder l'historique des commandes, les variables de la session etc." ;
01090 finp() ;
01091
01092 p("texte") ;
01093 echo "Pour réaliser des analyses statistiques (calculs et graphiques), il existe aussi des interfaces comme " ;
01094 echo href("http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/","Rcommander").", " ;
01095 echo href("http://rkward.sourceforge.net/","rkward")." et " ;
01096 echo href("http://rattle.togaware.com/","rattle").". " ;
01097 echo " Une page très officielle pour de telles interfaces est " ;
01098 echo href("http://www.sciviews.org/","sciviews").". " ;
01099 finp() ;
01100
01101 p("texte") ;
01102 echo "Il peut être plus ou moins difficile d'installer ces interfaces qui, si elles se lancent via le chargement d'un package, " ;
01103 echo " font souvent appel à des exécutables extérieurs, à d'autres langages comme Tk, C, Fortran... et à des bibliothèques graphiques comme GTK." ;
01104 finp() ;
01105
01106 p("texte") ;
01107 echo "A l'expérience, " ;
01108 echo href("http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/","Rcommander").", " ;
01109 echo " est assez agréable à utiliser avec des menus en français, " ;
01110 echo href("http://rkward.sourceforge.net/","rkward")." " ;
01111 echo " est assez complet et propose de nombreuses fenêtres " ;
01112 echo " de visualisation. Par contre, " ;
01113 echo href("http://rattle.togaware.com/","rattle")." " ;
01114 echo " est plus orienté data mining que statistiques. Il est conseillé de regarder la documentation de ces interfaces " ;
01115 echo " grâce aux liens ci-dessous afin de se faire une idée de ce qu'on peut en attendre, notamment via les copies d'écrans et les démonstrations... " ;
01116 finp() ;
01117
01118
01119 blockquote() ;
01120
01121 table(1,"9","collapse") ;
01122 tr() ;
01123 td("C","valigntop") ; echo href("http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/",img("../../Bism/rcmdr.jpg","R commander",300)) ; fintd() ;
01124 td("C","valigntop") ; echo href("http://rkward.sourceforge.net/?content=screenshots",img("../../Bism/rkward.png","rkward",300)) ; fintd() ;
01125 td("C","valigntop") ; echo href("http://rattle.togaware.com/rattle-screenshots.html",img("../../Bism/rattle.png","rattle",300)) ; fintd() ;
01126 fintr() ;
01127 tr() ;
01128 td("C","tajaunec") ; echo href("http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/"," R commander ","bouton_fin vert_pastel nou") ; fintd() ;
01129 td("C","tajaunec") ; echo href("http://rkward.sourceforge.net/"," rkward ","bouton_fin vert_pastel nou") ; fintd() ;
01130 td("C","tajaunec") ; echo href("http://rattle.togaware.com/"," rattle ","bouton_fin vert_pastel nou") ; fintd() ;
01131 fintr() ;
01132 fintable() ;
01133 finblockquote() ;
01134
01135 p("texte") ;
01136 echo "S'il peut être rassurant d'utiliser une interface pour $R, notamment au début pour découvrir les " ;
01137 echo " fonctions, nous ne conseillons pas de les utiliser dans le cadre d'une utilisations soutenue. La raison " ;
01138 echo " en est simple : pour reproduire des analyses et pour progresser, il faut avoir le code sous les yeux. " ;
01139 echo " Avec les interfaces, tout se fait par clic-souris et rien n'est automatisable. De plus seuls les " ;
01140 echo " paramètres les plus importants sont disponibles, et encore, pas forcément avec tous les choix possibles." ;
01141 finp() ;
01142
01143 p("texte") ;
01144 echo "Il vaut donc mieux, selon nous, investir un peu plus dans la ligne de commande et l'écriture de scripts " ;
01145 echo " que de cliquer... Dans la mesure où les interfaces affichent les commandes exécutées via les menus, on apprend vite à " ;
01146 echo " écrire ce qu'on veut faire et à paramètrer avec des noms des fichiers différents..." ;
01147 finp() ;
01148
01149 p("texte") ;
01150 echo "Nous utiliserons de façon synoptique et comparative ces interfaces dans la " ;
01151 echo href("intror4.php","séance 4").", à l'" ;
01152 echo href("intror4.php#tdm2","exercice 2","grouge").". " ;
01153 finp() ;
01154
01155 finsolution() ;
01156
01157 finblockquote() ;
01158
01159 ## -------------------------------------------------------------------------------------------
01160
01161 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # $R versus les autres logiciels statistiques
01162
01163 ## -------------------------------------------------------------------------------------------
01164
01165 blockquote() ;
01166
01167 p("texte") ;
01168 echo "Comment se situe $R par rapport aux autres \"grands logiciels statistiques\" ?" ;
01169 finp() ;
01170
01171 solution($numExo,$numSerie) ;
01172
01173 p("texte") ;
01174 echo "Si $R était au début un concurrent, $R est maintenant un \"plus\" à interfacer pour les grands logiciels. " ;
01175 echo " Voir par exemple quelques arguments via la " ;
01176 echo href("../Eda/edacrs.php?n=5&m=e#q10","question 10","grouge nou")." de notre cours " ;
01177 echo href("../Eda/eda.php","EDA","gnoir nou")." et " ;
01178 echo " la ".href("../Eda/edacrs.php?n=5&m=s#interfaces","réponse associée","gvert nou")."." ;
01179 finp() ;
01180
01181 p("texte") ;
01182 echo "Il est même possible d'utiliser $R via Excel. Donc $R peut servir de complément, notamment lorsque les " ;
01183 echo " autres logiciels sont déjà installés. " ;
01184 echo " Pour quelqu'un(e) habitué(e) à utiliser Statistica avec ses menus complets et dynamiques, ses sorties " ;
01185 echo " automatiques dans un fichier Word, sa paramétrisation programmée, $R n'est sans doute pas si extraordinaire " ;
01186 echo " que cela, sauf pour la bioinformatique et pour sa capacité à automatiser et réactualiser les rapports et articles." ;
01187 finp() ;
01188
01189 p("texte") ;
01190 echo "Pour un(e) professionel(le) de SAS, $R a une syntaxe étrange (la réciproque est vraie). " ;
01191 echo " Heureusement, il existe des passerelles et des ouvrages qui permettent de passer de l'un à l'autre." ;
01192 echo " SAS n'est donc plus indétronable pour la gestion automatisée \"rapide\" de rapports techniques " ;
01193 echo " pour de très gros volumes de données répartis sur la planète..." ;
01194 finp() ;
01195
01196 blockquote() ;
01197 table(0,20) ;
01198 tr() ;
01199 td("C") ;
01200 echo href("http://www.crcpress.com/product/isbn/9781420070576",img("kleinman.jpg","",100)) ;
01201 fintd() ;
01202 td("C") ;
01203 echo href("http://www.springer.com/statistics/computanional+statistics/book/978-1-4614-0684-6",img("muenchen.jpg","",100),"gbleuf nou") ;
01204 fintd() ;
01205 td("C") ;
01206 echo href("http://www.amazon.com/Handbook-Statistical-Analyses-Second-Edition/dp/1420079336",img("hsaur.jpg","",100)) ;
01207 fintd() ;
01208 td("C") ;
01209 echo href("http://www.amazon.com/Handbook-Statistical-Analyses-using-Edition/dp/1584887842",img("hsaus.jpg","",100)) ;
01210 fintd() ;
01211 fintr() ;
01212 tr() ;
01213 td("C") ;
01214 echo href("http://www.crcpress.com/product/isbn/9781420070576","Kleinman & Horton","gvert nou") ;
01215 fintd() ;
01216 td("C") ;
01217 echo href("http://www.springer.com/statistics/computanional+statistics/book/978-1-4614-0684-6","Muenchen","gvert nou") ;
01218 fintd() ;
01219 td("C") ;
01220 echo href("http://www.amazon.com/Handbook-Statistical-Analyses-Second-Edition/dp/1420079336","Everitt & Hothorn","gvert nou") ;
01221 fintd() ;
01222 td("C") ;
01223 echo href("http://www.amazon.com/Handbook-Statistical-Analyses-using-Edition/dp/1584887842","Der & Everitt","gvert nou") ;
01224 fintd() ;
01225 fintr() ;
01226 fintable() ;
01227 finblockquote() ;
01228
01229 p("texte") ;
01230 echo "Ce qui caractérise les grands logiciels payants comme " ;
01231 echo href("http://www.sas.com/offices/europe/france/","SAS") ;
01232 echo " et " ;
01233 echo href("http://www.statsoft.fr/index.php","Statistica") ;
01234 echo ", hormis leur catalogue de formation et d'assistance aux utilisateurs \n" ;
01235 echo "ce sont leurs possibilités de calculs, de graphiques, d'automatisation. \n" ;
01236 echo "Seuls les logiciels \n" ;
01237 echo href("http://www.sas.com/offices/europe/france/","SAS") ;
01238 echo " et " ;
01239 echo href("http://cran.r-project.org/","R") ;
01240 echo " sont capables de faire du \n" ;
01241 echo href("http://fr.wikipedia.org/wiki/Big_data","\"big data\"")." \n" ;
01242 echo "c'est-à-dire de traiter de gros volumes de données, \n" ;
01243 echo "disons quelques milliers de lignes et quelques centaines de colonnes, \n" ;
01244 echo "puisqu'ils ne cherchent pas à afficher systématiquement les données. \n" ;
01245 echo " On pourra par exemple consulter la page d'accueil de " ;
01246 echo href("http://www.revolutionanalytics.com/","R Analytics").". " ;
01247 finp() ;
01248
01249 p("texte") ;
01250 echo "De même, seuls \n" ;
01251 echo href("http://www.sas.com/offices/europe/france/","SAS") ;
01252 echo " et " ;
01253 echo href("http://cran.r-project.org/","R") ;
01254 echo " sont capables de lire des fichiers disponibles sur le Web, d'avoir des systèmes de labels et de formats \n" ;
01255 echo " automatisables pour fournir des versions multilingues des données et des résultats " ;
01256 echo " (voir, là encore notre cours " ;
01257 echo href("../Eda/edacrs.php?n=5&m=e","EDA 5","gvert nou").")." ;
01258 finp() ;
01259
01260 p("texte") ;
01261 echo "Par contre, à notre connaissance, seul " ;
01262 echo href("http://cran.r-project.org/","R") ;
01263 echo " est réactif et fournit de nouvelles méthodes statistiques, de nouveaux graphiques, notamment en bioinformatique, " ;
01264 echo " en économie, et en économétrie. $R devient ainsi une " ;
01265 echo href("http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html?_r=3","lingua franca") ;
01266 echo " selon le New York Times (2009). " ;
01267 echo " A titre de comparaison, la \"nouvelle\" version de " ;
01268 echo href("http://www.sas.com/offices/europe/france/","SAS") ;
01269 echo " (pour 2013), nommée " ;
01270 echo href("http://www.sas.com/fr_fr/software/sas9.html","SAS 9.4") ;
01271 echo " comporte de nombreux ajouts informatiques mais pas statistiques. " ;
01272 echo " Il faut toutefois signaler la tentative récente (2013) nommée " ;
01273 echo href("http://www.sas.com/offices/europe/france/software/technologies/bi/visual-analytics.html","SAS Visual Analytics") ;
01274 #echo " centrée sur la ".href("http://www.sas.com/reg/gen/fr/ga-Livre-Blanc-DataViz-EBG-SAS-2013","visualisation")." des données." ;
01275 echo " centrée sur la visualisation des données." ;
01276 finp() ;
01277
01278 p("texte") ;
01279 echo " Enfin, les diverses structures de données comme les ".em("listes").", les ".em("vecteurs").", les ".em("matrices")." et les ".em("data frames")." fournissent à " ;
01280 echo href("http://cran.r-project.org/","R") ;
01281 echo " une souplesse et une grande cohésion en un seul langage que n'a pas, par exemple " ;
01282 echo href("http://www.sas.com/offices/europe/france/","SAS") ;
01283 echo " qui ne dispose que d'une seule structure de données, les ".em("datasets")." et qui utilise cinq (!) langages propriétaires, " ;
01284 echo " à savoir " ;
01285 echo href("http://fr.wikipedia.org/wiki/SAS_%28langage%29","SAS L").", " ;
01286 #echo href("http://www.sas.com/offices/europe/france/services/support/faq/sasbase_macro.html","SAS ML").", " ;
01287 echo href("http://stats.idre.ucla.edu/sas/seminars/sas-macros-introduction/","SAS ML").", " ;
01288 echo href("http://support.sas.com/documentation/onlinedoc/iml/","SAS IML").", " ;
01289 #echo href("http://www.sas.com/offices/europe/france/services/support/articles/US2013_Q1_DS2.html","SAS DS2").", " ;
01290 echo href("https://support.sas.com/documentation/cdl/en/ds2ref/69739/HTML/default/viewer.htm","SAS DS2").", " ;
01291 echo href("http://support.sas.com/documentation/cdl/en/fedsqlref/66010/HTML/default/viewer.htm#titlepage.htm","SAS FedSQL").". " ;
01292 finp() ;
01293
01294 finsolution() ;
01295
01296 finblockquote() ;
01297
01298 ## -------------------------------------------------------------------------------------------
01299
01300 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Cours de $R en ligne et en français
01301
01302 ## -------------------------------------------------------------------------------------------
01303
01304 blockquote() ;
01305
01306 p("texte") ;
01307 echo "Y a-t-il beaucoup de cours de $R en ligne et en français ?" ;
01308 echo " Et de manuels au format PDF ?" ;
01309 finp() ;
01310
01311 solution($numExo,$numSerie) ;
01312
01313 p("texte") ;
01314 echo "Oui, bien sûr, d'autant plus que de plus en plus d'enseignants utilisent $R." ;
01315 finp() ;
01316
01317 # en voici une sélection
01318
01319 p("texte") ;
01320 echo "S'il ne fallait choisir qu'un seul document, ce serait " ;
01321 echo href("http://cran.r-project.org/doc/contrib/Paradis-rdebuts_fr.pdf","celui d'E. Paradis","gbleuf nou").". " ;
01322 echo " Il est suffisamment complet pour fournir une revue générale de $R sous l'angle des données, des calculs, des graphiques... " ;
01323 echo " en 80 pages." ;
01324 finp() ;
01325
01326 p("texte") ;
01327 echo "S'il ne fallait retenir qu'un seul site avec des exercices corrigés, ce serait " ;
01328 echo href("http://pbil.univ-lyon1.fr/R/","pbil/R","gbleuf nou")." ; " ;
01329 echo " on y trouve notamment un " ;
01330 echo href("http://pbil.univ-lyon1.fr/Rweb/Rweb.general.html","Rweb","grouge nou") ;
01331 echo " qui permet d'exécuter du code $R dans un navigateur..." ;
01332 finp() ;
01333
01334 p("texte") ;
01335 echo "Pour des listes de livres sur $R, consulter " ;
01336 echo href("../Programmation_R/Programmation_avancee/progr.php?n=1&m=s#livres","la solution 14") ;
01337 echo " de notre cours de ".s_span("Programmation avancée en R","gbleuf").", " ;
01338 echo " tout en sachant que la majorité des ouvrages sont en anglais, comme on peut le voir à ";
01339 echo href("../Programmation_R/Programmation_avancee/progr.php?n=1&m=e#books","l'énoncé 14") ;
01340 echo " de ce même cours. " ;
01341 finp() ;
01342
01343 finsolution() ;
01344
01345 finblockquote() ;
01346
01347 ## -------------------------------------------------------------------------------------------
01348
01349 finPageExercices($numSerie) ; # contient finSection() et finPage() ; la fonction est dans intror_inc.php
01350
01351 ?>
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)