{"id":1097,"date":"2015-02-05T17:03:33","date_gmt":"2015-02-05T22:03:33","guid":{"rendered":"http:\/\/bioinfo.iric.ca\/?p=1097"},"modified":"2017-04-29T17:15:34","modified_gmt":"2017-04-29T21:15:34","slug":"lecture-de-tableaux-charger-des-donnees-dans-r-sans-soucis","status":"publish","type":"post","link":"https:\/\/bioinfo.iric.ca\/fr\/lecture-de-tableaux-charger-des-donnees-dans-r-sans-soucis\/","title":{"rendered":"Lecture de tableaux: charger des donn\u00e9es dans R sans soucis"},"content":{"rendered":"<p>La premi\u00e8re chose que j&rsquo;ai appris \u00e0 faire dans R est de charger un tableau de donn\u00e9es. D&rsquo;habitude, l&rsquo;aventure R commence avec l&rsquo;aide d&rsquo;une personne plus exp\u00e9riment\u00e9e qui vous montre comment charger vos donn\u00e9es dans le logiciel. Typiquement, la commande requise s&rsquo;apparente \u00e0 :<\/p>\n<div class=\"R\">\n<pre><code>\r\ndata&lt;-read.table(\"~\/dossier\/datafile.txt\")\r\n<\/code><\/pre>\n<\/div>\n<p>Vous allez s\u00fbrement ajouter plusieurs autres param\u00e8tres aux parenth\u00e8ses, tels que\u00a0\u00ab\u00a0<code>row.names=0<\/code>\u00a0\u00bb ou \u00ab\u00a0<code>header=TRUE<\/code>\u00a0\u00bb ou, \u00ab\u00a0<code>sep=\"\\t\"<\/code>\u00ab\u00a0, pour s&rsquo;assurer que le fichier est lu correctement.<\/p>\n<p>Cette mani\u00e8re de fonctionner est parfaitement correcte pour de petits jeux de donn\u00e9es.<\/p>\n<p>Cependant, pour maximiser votre temps, explorons les probl\u00e8mes les plus communs et surtout leurs solutions.<\/p>\n<h3>Probl\u00e8me #1: \u00a0Toutes les donn\u00e9es sont dans une colonne!<\/h3>\n<p><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1.png\"><img decoding=\"async\" class=\"alignnone size-medium wp-image-1096\" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1-300x292.png\" alt=\"Screenshot\" width=\"300\" height=\"292\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1-52x50.png 52w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1-300x292.png 300w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1.png 394w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>Solution:<\/strong>\u00a0Ceci est tr\u00e8s commun. Vous devez sp\u00e9cifier le s\u00e9parateur!<br \/>\nCeci est fait utilisant le param\u00e8tre <code>sep=\"XXX\"<\/code> dans la fonction <code>read.table()<\/code>. \u00c0 la place des XXX, vous devez mettre le s\u00e9parateur de vos donn\u00e9es. Typiquement, c&rsquo;est soit un point-virgule (;) ou une virgule (,) <div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 hundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-overflow:visible;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last fusion-column-no-min-height\" style=\"--awb-bg-size:cover;--awb-margin-bottom:0px;\"><div class=\"fusion-column-wrapper fusion-flex-column-wrapper-legacy\">[pour les fichiers .csv] ou encore une tabulation\u00a0(\\t) [pour les fichiers .txt].<\/p>\n<p>&nbsp;<\/p>\n<h3>Probl\u00e8me #2: \u00a0R n&rsquo;a pas compris que j&rsquo;ai des noms de colonnes et de rang\u00e9es et il les a mis dans le tableau.<\/h3>\n<p><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1.png\"><img decoding=\"async\" class=\"alignnone size-medium wp-image-1096\" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1-300x292.png\" alt=\"Screenshot\" width=\"300\" height=\"292\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1-52x50.png 52w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1-300x292.png 300w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/02\/Screenshot1.png 394w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>Solution:<\/strong>\u00a0Ceci est rare mais facilement corrig\u00e9. Vous devez sp\u00e9cifier que vous avez des noms de colonnes (<code>header=TRUE<\/code>) et de rang\u00e9es (<code>rownames=1<\/code>) dans votre fonction <code>read.table()<\/code><\/p>\n<p>&nbsp;<\/p>\n<h3>Probl\u00e8me #3: Mon tableau est charg\u00e9 mais les donn\u00e9es sont sous la forme \u00ab\u00a0factor\u00a0\u00bb et je ne comprends pas pourquoi!<\/h3>\n<div class=\"R\">\n<pre><code>\r\n&gt; data&lt;-read.table(\"data.txt\")\r\n&gt; class(data[,1])\r\n[1] \"factor\"<\/code><\/pre>\n<\/div>\n<p><strong>Solution:<\/strong>\u00a0Dites \u00e0 R que vous ne voulez pas de facteurs! Le param\u00e8tre <code>as.is<\/code> peut vous aider.<br \/>\n<em>Note \u00e0 propos des facteurs:<\/em>\u00a0Bien qu&rsquo;elle soit parfois tr\u00e8s utile, cette classe de donn\u00e9es peut s&rsquo;av\u00e9rer difficile \u00e0 g\u00e9rer, surtout lorsqu&rsquo;on veut faire des calculs sur des valeurs num\u00e9riques dans le tableau. La fonction <code>read.table()<\/code> de R convertit par d\u00e9faut toutes les valeurs en facteurs.<\/p>\n<div class=\"R\">\n<pre><code>\r\n&gt; data&lt;-read.table(\"data.txt\",as.is = TRUE)\r\n&gt; class(data[,1])\r\n[1] \"character\" <\/code><\/pre>\n<\/div>\n<h3>Probl\u00e8me #4: \u00a0Mon tableau prend trop de temps \u00e0 charger!<\/h3>\n<p><strong>Solution:<\/strong> R est efficace dans le chargement de donn\u00e9es lorsqu&rsquo;on limite sa n\u00e9cessit\u00e9 \u00e0 prendre des d\u00e9cisions. En d&rsquo;autres mots, tel que vu dans le probl\u00e8me #3, R convertit les donn\u00e9es en facteurs. Ceci rajoute consid\u00e9rablement de temps de calcul.<\/p>\n<p>Toujours pas convaincu? Voici une \u00e9valuation de performance:<\/p>\n<p><code>data.txt<\/code> contient un jeu de donn\u00e9es RNASeq de 21024 genes pour 3080\u00a0patients.<\/p>\n<div class=\"R\">\n<pre><code>\r\n&gt; data&lt;-read.table(\"data.txt\",header=TRUE,sep=\"\\t\")\r\n&gt; elapsed \r\n  771.274 seconds \r\n<\/code><\/pre>\n<\/div>\n<div class=\"R\">\n<pre><code>\r\n&gt; data&lt;-read.table(\"data.txt\",header=TRUE,<strong>as.is=TRUE<\/strong>,sep=\"\\t\")\r\n&gt; elapsed\r\n\u00a0 184.764 seconds\r\n<\/code><\/pre>\n<\/div>\n<p>On observe une diff\u00e9rence de temps de chargement de 4 fois! Vous pourriez couper dans votre temps de chargement encore davantage si vous sauvegardez votre tableau en format RData (rda).<\/p>\n<div class=\"R\">\n<pre><code>\r\n&gt; load(\"data.rda\")\r\n&gt; elapsed\r\n\u00a0 35.915 seconds\r\n<\/code><\/pre>\n<\/div>\n<p>Mais bien s\u00fbr, ceci implique de l&rsquo;avoir charg\u00e9 au moins une fois dans R&#8230;<\/p>\n<p>Je vous encourage \u00e0 explorer les autres options de la fonction <code>read.table()<\/code>, vous serez surpris!<\/p>\n<p><em>Une note concernant la fonction <code>read.delim() <code><\/code><\/code><\/em>: cette fonction est un \u00ab\u00a0wrapper\u00a0\u00bb de la fonction <code>read.table()<\/code> contenant les param\u00e8tres \u00e0 usage courant. Utilisez-la \u00e0 vos risques \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<div class=\"fusion-clearfix\"><\/div><\/div><\/div><\/div><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La premi\u00e8re chose que j&rsquo;ai appris \u00e0 faire dans R est de charger un tableau de donn\u00e9es. D&rsquo;habitude, l&rsquo;aventure R commence avec l&rsquo;aide d&rsquo;une personne plus exp\u00e9riment\u00e9e qui vous montre comment charger vos donn\u00e9es dans le logiciel. Typiquement, la commande requise s&rsquo;apparente \u00e0 : data&lt;-read.table(\u00ab\u00a0~\/dossier\/datafile.txt\u00a0\u00bb) Vous allez s\u00fbrement ajouter plusieurs autres param\u00e8tres aux parenth\u00e8ses, tels que\u00a0\u00ab\u00a0row.names=0\u00a0\u00bb ou \u00ab\u00a0header=TRUE\u00a0\u00bb ou, \u00ab\u00a0sep=\u00a0\u00bb\\t\u00a0\u00bb\u00ab\u00a0, pour s&rsquo;assurer que le fichier est lu correctement. Cette mani\u00e8re de fonctionner est parfaitement correcte pour de petits jeux de <a href=\"https:\/\/bioinfo.iric.ca\/fr\/lecture-de-tableaux-charger-des-donnees-dans-r-sans-soucis\/\"> [&#8230;]<\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[41,24],"tags":[144],"class_list":["post-1097","post","type-post","status-publish","format-standard","hentry","category-bioinformatique","category-langage-r","tag-debutant"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/1097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/comments?post=1097"}],"version-history":[{"count":12,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/1097\/revisions"}],"predecessor-version":[{"id":3271,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/1097\/revisions\/3271"}],"wp:attachment":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/media?parent=1097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/categories?post=1097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/tags?post=1097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}