{"id":949,"date":"2018-08-13T09:42:53","date_gmt":"2018-08-13T07:42:53","guid":{"rendered":"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/?p=949"},"modified":"2018-08-13T09:44:56","modified_gmt":"2018-08-13T07:44:56","slug":"se-souvenir-de-tout","status":"publish","type":"post","link":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/se-souvenir-de-tout\/","title":{"rendered":"Se souvenir de tout"},"content":{"rendered":"<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Se_rappeler_de_tout\/Lise_Vaudor_headband-1.png\" alt=\"\" \/><\/p>\n<p>Eh bien voil\u00e0, tout est parti de l\u00e0:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/images\/img_posts\/tweet.jpeg\" alt=\"\" \/><\/p>\n<p>Je me reconnais doublement dans ce tweet, d&rsquo;une part parce que moi aussi j&rsquo;ai du mal avec les fonctions <code>gather()<\/code> et <code>spread()<\/code> de tidyr (et que je dois consulter la cheatsheet <em>\u00e0 chaque fois<\/em> que je les utilise), et d&rsquo;autre part parce qu&rsquo;\u00e0 moi aussi, on me pose souvent la question dans le cadre des formations R que je fais: \u00ab\u00a0Mais comment on fait pour <strong>se rappeler tout \u00e7a<\/strong>??\u00a0\u00bb.<\/p>\n<p>Alors, deux possibilit\u00e9s:<\/p>\n<ul>\n<li><strong>Possibilit\u00e9 n\u00b01<\/strong>: On est une sorte de <strong>badass \u00e0 la m\u00e9moire photographique<\/strong>, style Lisbeth Salander. Auquel cas, on se rappelle de tout, et on ma\u00eetrise grave, un point c&rsquo;est tout.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/images\/img_posts\/lisbeth.jpg\" alt=\"\" \/><\/p>\n<p>Si vous \u00eates dans ce cas, f\u00e9licitations! Vous n&rsquo;avez nullement besoin de lire la suite de ce post.<\/p>\n<ul>\n<li><strong>Possibilit\u00e9 n\u00b02<\/strong>: Vous avez une <strong>capacit\u00e9 de m\u00e9morisation limit\u00e9e<\/strong>, voire tr\u00e8s limit\u00e9e, plut\u00f4t dans le genre de Dory.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/images\/img_posts\/dory.jpg\" alt=\"\" \/><\/p>\n<p>Bon. Personnellement, je me reconnais plut\u00f4t dans le deuxi\u00e8me profil, comme vous peut-\u00eatre, puisque <em>vous \u00eates encore en train de me lire<\/em>&#8230;<\/p>\n<p>Et \u00e7a veut dire que ben, en fait, <strong>on ne se rappelle pas tout<\/strong>, loin s&rsquo;en faut. En r\u00e9alit\u00e9, le mieux que l&rsquo;on puisse esp\u00e9rer c&rsquo;est sans doute:<\/p>\n<ul>\n<li><strong>se rappeler<\/strong> les choses dont on se sert <strong>tout le temps<\/strong><\/li>\n<li><strong>retrouver tr\u00e8s rapidement<\/strong> les choses dont on se sert <strong>souvent<\/strong><\/li>\n<li><strong>retrouver rapidement<\/strong> les choses dont on se sert <strong>occasionnellement<\/strong><\/li>\n<li><strong>savoir rechercher efficacement<\/strong> les choses dont on se sert <strong>rarement<\/strong><\/li>\n<\/ul>\n<p>Pour y arriver, il existe \u00e9videmment tout un tas de <strong>strat\u00e9gies<\/strong> diff\u00e9rentes. Or parler de la mani\u00e8re dont les gens travaillent <em>In Real Life<\/em> \u00e7a peut sembler trivial mais c&rsquo;est en fait hyper important quand on essaie de se faire l&rsquo;ap\u00f4tre de R. (Et l\u00e0, j&rsquo;ai tr\u00e8s envie de partir en digression sur la notion de \u00ab\u00a0workflow\u00a0\u00bb et sur tous les outils qui permettent de l&rsquo;am\u00e9liorer: RStudio, le tidyverse, et tutti quanti, mais <em>je vais me retenir<\/em>.)<\/p>\n<p>Du coup, je vais me contenter ici de d\u00e9crire mes quelques petites <strong>techniques de m\u00e9morisation\/rem\u00e9morisation<\/strong>&#8230; Elles sont parfois \u00ab\u00a0triviales\u00a0\u00bb (et sans doute imparfaites), mais peut-\u00eatre trouverez-vous int\u00e9ressant de les comparer aux v\u00f4tres et \u00e0 cette occasion de r\u00e9fl\u00e9chir \u00e0 votre <strong>workflow<\/strong>.<\/p>\n<p>D&rsquo;ailleurs, <strong>n&rsquo;h\u00e9sitez pas \u00e0 r\u00e9agir et \u00e0 enrichir le post avec vos strat\u00e9gies personnelles<\/strong> en ajoutant des commentaires ci-dessous!!<\/p>\n<h1>Je sais de quelle fonction j&rsquo;ai besoin, mais je ne sais plus trop comment l&rsquo;utiliser&#8230;<\/h1>\n<p>On est ici typiquement dans le cas o\u00f9 la <strong>documentation<\/strong> associ\u00e9e \u00e0 la fonction doit permettre de s&rsquo;en sortir&#8230;<\/p>\n<p>Un petit<\/p>\n<pre><code>?fonction\n<\/code><\/pre>\n<p>ou<\/p>\n<pre><code>help(fonction)\n<\/code><\/pre>\n<p>Filez vers la section \u00ab\u00a0Arguments\u00a0\u00bb si ce qui met votre m\u00e9moire en d\u00e9faut est<\/p>\n<ul>\n<li>l&rsquo;ordre des arguments,<\/li>\n<li>la nature des arguments,<\/li>\n<li>l&rsquo;existence potentielle d&rsquo;un argument qui ferait le petit quelque chose en plus qui vous int\u00e9resse<\/li>\n<\/ul>\n<p>Si vous \u00eates en qu\u00eate d&rsquo;un rafra\u00eechissement de m\u00e9moire encore plus \u00e9l\u00e9mentaire que \u00e7a (par exemple vous cherchez \u00e0 vous rappeler quel genre d&rsquo;objet on peut passer en argument principal \u00e0 une fonction), vous pouvez essayer de filer directement vers la section <strong>Examples<\/strong>&#8230;<\/p>\n<h1>Je sais de quel package j&rsquo;ai besoin, mais je ne sais plus trop quelle est la fonction qui m&rsquo;int\u00e9resse&#8230;<\/h1>\n<h3>Cas n\u00b01: le package fait l&rsquo;objet d&rsquo;une cheatsheet&#8230;<\/h3>\n<p>Si le package en question fait l&rsquo;objet d&rsquo;une antis\u00e8che, ou <strong>cheatsheet<\/strong>, alors, hourra! cela devrait \u00eatre assez simple de remettre la main sur la fonction qui m&rsquo;int\u00e9resse&#8230;<\/p>\n<p>En pratique, j&rsquo;ai imprim\u00e9 les cheatsheets associ\u00e9es \u00e0 l&rsquo;ensemble des packages que j&rsquo;utilise r\u00e9guli\u00e8rement, et je les ajoute \u00e0 mon petit <strong>pr\u00e9sentoir \u00e0 cheatsheets<\/strong> (i.e. un porte-documents punais\u00e9 au mur):<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/images\/img_posts\/bureau_cheatsheets.jpg\" alt=\"\" \/><\/p>\n<p>(et hop, en <em>exclusivit\u00e9 mondiale<\/em>, une photo du mur \u00e0 droite de mon bureau)<\/p>\n<p>A l&rsquo;heure actuelle dans mon pr\u00e9sentoir, j&rsquo;ai les cheatsheets relatives \u00e0 <code>dplyr<\/code> et <code>tidyr<\/code>, <code>ggplot2<\/code>, <code>Rmarkdown<\/code>,<code>stringr<\/code> et expressions r\u00e9guli\u00e8res, <code>purrr<\/code>, et <code>Shiny<\/code>. C&rsquo;est assez difficile \u00e0 quantifier, mais je dirais qu&rsquo;il est rare qu&rsquo;un jour ne s&rsquo;\u00e9coule sans que je consulte mon \u00ab\u00a0pr\u00e9sentoir \u00e0 cheatsheets\u00a0\u00bb&#8230;<\/p>\n<p>D&rsquo;ailleurs, pour voir une liste exhaustive des cheatsheets Rstudio, c&rsquo;est <a href=\"https:\/\/www.rstudio.com\/resources\/cheatsheets\/\">ici<\/a>&#8230;<\/p>\n<h3>Cas n\u00b02 : le package fait l&rsquo;objet d&rsquo;une ou plusieurs vignettes<\/h3>\n<p>Personnellement, pour apprendre, comme pour retrouver vite fait ce que fait un package, j&rsquo;aime bien jeter un oeil aux <strong>vignettes<\/strong> (si elles existent).<\/p>\n<p>Par exemple ici, <a href=\"https:\/\/cran.r-project.org\/web\/packages\/tidytext\/vignettes\/tidytext.html\">la vignette associ\u00e9e au package <code>tidytext<\/code><\/a>.<\/p>\n<p>Le principe d&rsquo;une vignette, c&rsquo;est de <strong>fournir un aper\u00e7u de ce que fait le package<\/strong>, en mettant en avant ses <strong>principales fonctions<\/strong>, et la mani\u00e8re dont elles s&rsquo;articulent entre elles.<\/p>\n<p>Ainsi, la vignette est le format qu&rsquo;il vous faut si<\/p>\n<ul>\n<li>vous avez simplement besoin d&rsquo;un <strong>petit rafra\u00eechissement de m\u00e9moire<\/strong> sur les fonctionnalit\u00e9s d&rsquo;un package,<\/li>\n<li>ne <strong>voulez pas risquer d&rsquo;\u00eatre noy\u00e9<\/strong> dans un tas de d\u00e9tails techniques inutiles \u00e0 votre usage<\/li>\n<\/ul>\n<p>Les packages R r\u00e9cents semblent faire de plus en plus souvent l&rsquo;objet d&rsquo;une vignette, et c&rsquo;est tant mieux! car le nombre de package ne fait qu&rsquo;augmenter et tout moyen pour s&rsquo;y retrouver est bon \u00e0 prendre :-).<\/p>\n<h3>Cas n\u00b03 le package n&rsquo;est l&rsquo;objet ni d&rsquo;une cheatsheet ni d&rsquo;une vignette<\/h3>\n<p>Si le package dont je sais avoir besoin <strong>n&rsquo;est l&rsquo;objet ni d&rsquo;une cheatsheet, ni d&rsquo;une vignette<\/strong>, alors l\u00e0 je n&rsquo;ai malheureusement plus de m\u00e9thode standard pour me rafra\u00eechir la m\u00e9moire.<\/p>\n<h4>Solution n\u00b01: Je peux essayer de me rafra\u00eechir la m\u00e9moire chez les autres&#8230;<\/h4>\n<p>Eh oui, car, heureusement, je ne suis pas en train de faire un devoir sur table o\u00f9 l&rsquo;usage du smartphone serait interdit&#8230; L&rsquo;<strong>internet<\/strong> est l\u00e0 pour voler \u00e0 mon secours&#8230;<\/p>\n<p>De fait, une petite recherche <em>Google<\/em> (ou <em>Bing<\/em>, ou <em>Duck-duck go<\/em> ou n&rsquo;importe quel moteur de recherche) sur le nom du package (+ \u00e9ventuellement \u00ab\u00a0Rstat\u00a0\u00bb ou \u00ab\u00a0CRAN\u00a0\u00bb) devrait vous donner quelques r\u00e9sultats int\u00e9ressants.<\/p>\n<p>Dans ce contexte, ce que j&rsquo;appelle \u00ab\u00a0int\u00e9ressant\u00a0\u00bb, c&rsquo;est un document qui vous permettra de vous <strong>rem\u00e9morer en un coup d&rsquo;oeil<\/strong> les fonctions principales du package et la fa\u00e7on dont on les appelle&#8230; et non le pdf qui liste l&rsquo;ensemble des fonctions d&rsquo;un package et compile leur documentation, car ce document <strong>ne pr\u00e9sente aucune hi\u00e9rarchisation<\/strong> des fonctions, que ce soit en importance ou en ordre d&rsquo;appel&#8230;<\/p>\n<p>Certains packages font ainsi l&rsquo;objet de <strong>billets de blog<\/strong>, ou de <strong>supports p\u00e9dagogiques<\/strong> assez exhaustifs. Par exemple, le package <code>FactoMineR<\/code> relatif aux m\u00e9thodes factorielles <a href=\"http:\/\/factominer.free.fr\/\">a un site associ\u00e9 qui liste tout un tas de ressources<\/a>. Ce genre de site, c&rsquo;est une mine d&rsquo;or quand on <em>apprend<\/em> \u00e0 utiliser un package et qu&rsquo;on cherche \u00e0 <em>comprendre<\/em> la m\u00e9thode associ\u00e9e. C&rsquo;est un peu <em>trop riche<\/em>, en revanche, quand on a juste besoin de se <em>rem\u00e9morer<\/em> les commandes ad hoc. Si je suis s\u00fbre de pouvoir y retrouver <em>toutes<\/em> les infos dont j&rsquo;ai besoin, je ne suis en revanche pas s\u00fbre de retrouver ces infos <em>rapidement<\/em>&#8230; (En l&rsquo;occurrence, un billet de blog peut \u00eatre plus int\u00e9ressant dans ce contexte, car plus concis&#8230;)<\/p>\n<p>On entre l\u00e0, pour moi, dans une \u00ab\u00a0zone grise\u00a0\u00bb o\u00f9 il n&rsquo;y a pas de \u00ab\u00a0court document de r\u00e9f\u00e9rence\u00a0\u00bb, et o\u00f9 il va, de fait, falloir explorer, arbitrer, parcourir un certain nombre de sites\/blogs\/vid\u00e9os avant de trouver le support qui convient \u00e0 notre besoin.<\/p>\n<p>Dans l&rsquo;id\u00e9al, je pense qu&rsquo;une solution \u00ab\u00a0efficace\u00a0\u00bb serait d&rsquo;avoir des marque-pages tr\u00e8s bien organis\u00e9s sur nos navigateurs web pour remettre la main rapidement sur nos aide-m\u00e9moires favoris&#8230;<\/p>\n<p>Pour le coup, je suis moi-m\u00eame tr\u00e8s peu efficace et fonctionne <em>\u00e0 chaque fois<\/em> par des recherches Google que j&rsquo;affine au coup par coup (bouh!) en fonction de mes types de supports et blogs pr\u00e9f\u00e9r\u00e9s&#8230; (Et vous, vous faites comment??)<\/p>\n<h4>Je peux essayer de me rafra\u00eechir la m\u00e9moire en parcourant mes propres projets<\/h4>\n<p>Si j&rsquo;ai d\u00e9j\u00e0 utilis\u00e9 le package <code>pouetpouet<\/code> par le pass\u00e9, alors rechercher l&rsquo;ensemble des documents qui comprennent <code>library(pouetpouet)<\/code> sur mon PC me permet d&rsquo;aller me rafra\u00eechir la m\u00e9moire assez rapidement <em>dans mes scripts<\/em> ou dans <em>mes documents .Rmd et les .html\/.docx\/.pdf associ\u00e9s<\/em>.<\/p>\n<p>(Si je me rappelle avoir d\u00e9j\u00e0 fait ce genre de chose, mais je ne sais plus quel est le package et\/ou la fonction qui permettent de le faire, je suis \u00e0 peu pr\u00e8s dans le m\u00eame cas de figure sauf qu&rsquo;il va d&rsquo;abord falloir que je me raccroche aux branches en essayant de me rappeler <em>a minima<\/em> le contexte dans lequel j&rsquo;ai pu faire ce genre de choses&#8230; et parcourir l&rsquo;ensemble des dossiers potentiellement concern\u00e9s!&#8230;)<\/p>\n<p>Comme mes scripts sont bien entendu <em>toujours tr\u00e8s bien comment\u00e9s<\/em> et mes documents Rmd <em>toujours tr\u00e8s bien expliqu\u00e9s<\/em>, je retrouve les infos dont j&rsquo;ai besoin en un quart de seconde ;-).<\/p>\n<p>Plus s\u00e9rieusement, on est l\u00e0 dans le cas d&rsquo;\u00e9cole de \u00ab\u00a0Voil\u00e0 \u00e0 quoi \u00e7a sert de travailler en pensant \u00e0 son futur soi-m\u00eame\u00a0\u00bb&#8230; <em>Si on a \u00e9t\u00e9 gentil avec son futur soi-m\u00eame par le pass\u00e9, le pr\u00e9sent soi-m\u00eame est reconnaissant du temps gagn\u00e9!<\/em> (Ceci n&rsquo;est pas une citation de Jean-Claude Van Damme, mais \u00e7a y ressemble tellement que \u00e7a m\u00e9rite de l&rsquo;italique et un gif. Hop)<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/images\/img_posts\/vandamme.gif\" alt=\"\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eh bien voil\u00e0, tout est parti de l\u00e0: Je me reconnais doublement dans ce tweet, d&rsquo;une part parce que moi aussi j&rsquo;ai du mal avec les fonctions gather() et spread() de tidyr (et que je dois consulter la cheatsheet \u00e0 chaque fois que je les utilise), et d&rsquo;autre part parce qu&rsquo;\u00e0 moi aussi, on me pose souvent la question dans le cadre des formations R que je fais: \u00ab\u00a0Mais comment.. <a href=\"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/se-souvenir-de-tout\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-949","post","type-post","status-publish","format-standard","hentry","category-tous-les-posts"],"_links":{"self":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/comments?post=949"}],"version-history":[{"count":22,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/949\/revisions"}],"predecessor-version":[{"id":972,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/949\/revisions\/972"}],"wp:attachment":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/media?parent=949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/categories?post=949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/tags?post=949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}