{"id":766,"date":"2011-11-15T09:51:19","date_gmt":"2011-11-15T08:51:19","guid":{"rendered":"https:\/\/abcdr.guyader.pro\/?p=766"},"modified":"2018-04-07T23:59:42","modified_gmt":"2018-04-07T22:59:42","slug":"comment-creer-une-fonction-dans-r-function","status":"publish","type":"post","link":"https:\/\/thinkr.fr\/abcdr\/comment-creer-une-fonction-dans-r-function\/","title":{"rendered":"Comment cr\u00e9er une fonction dans R ? : function"},"content":{"rendered":"<p>R nous donne la possibilit\u00e9, tr\u00e8s pratique, de cr\u00e9er des fonctions personnalis\u00e9es.<br \/>Voici l&rsquo;architecture globale :<\/p>\n<pre><code><br \/><br \/>nomdemafonction&lt;-function(variable1,variable2...)<br \/>{<br \/>#ici on met le contenu de la fonction (g\u00e9n\u00e9ralement on effectue des transformations aux variables pass\u00e9es en argument)<br \/><br \/><br \/><br \/><br \/><br \/>return(Variabledesortie)# il s'agit du r\u00e9sultat que va renvoyer la fonction<br \/>}<br \/><br \/>#une fois la fonction cr\u00e9\u00e9e on peut l'utiliser:<br \/> nomdemafonction(varA,varB)<br \/><br \/><br \/><\/code><\/pre>\n<p> Contrairement \u00e0 d&rsquo;autres languages, il n &lsquo;y a pas de contr\u00f4le du type de variable que l&rsquo;on peut utiliser. Il faudra l&rsquo;inclure dans la fonction pour, par exemple, v\u00e9rifier que la variable A est bien un vecteur (et pas un data.frame par exemple)<\/p>\n<p>Voici un exemple de fonction, il s&rsquo;agit d&rsquo;une fonction simple qui va prendre 2 variables de type \u00ab\u00a0integer\u00a0\u00bb (c&rsquo;est \u00e0 dire un chiffre), en faire la somme, en prendre le carr\u00e9 et rajouter la valeur de la premi\u00e8re variable.<\/p>\n<pre><code><br \/><br \/>monexemple&lt;-function(A,B){<br \/>out&lt;-(A+B)^2<br \/>out&lt;-out + A<br \/>return(out)<br \/>}<br \/><br \/>monexemple(2,3)#27<br \/>monexemple(8,3)#129<br \/><br \/>\u00a0<\/code><\/pre>\n<p>L&rsquo;ordre des param\u00e8tres est important, il faut les passer dans le m\u00eame ordre que dans le code de la fonction, ici A puis B.<br \/>Il est possible (et m\u00eame conseill\u00e9) de faire autrement en pr\u00e9cisant la variable : <\/p>\n<pre><code><br \/><br \/> monexemple(2,3)#27 <br \/> monexemple(3,2)#28<br \/><br \/><br \/> monexemple(A=2,B=3)#27<br \/> monexemple(B=3,A=2)#27 \u00a0<br \/>\u00a0<\/code><\/pre>\n<p>Il est possible de d\u00e9finir une valeur par defaut pour certain parametres ( ils deviennent alors optionnel)<\/p>\n<p><\/p>\n<pre><code><br \/><br \/> monexemple2&lt;-function(A,B=10){<br \/>out&lt;-(A+B)^2<br \/>out&lt;-out + A<br \/>return(out)<br \/>}<br \/><p>monexemple2(3) #A=3 et B=10<br \/>monexemple2(3,10) #A=3 et B=10<br \/>monexemple2(3,11) #A=3 et B=11<\/p><br \/> <\/code><\/pre>\n<p>Bonus : <\/p>\n<p>Il est possible d&rsquo;utiliser le symbole \u00ab\u00a0&#8230;\u00a0\u00bb dans les param\u00e8tres d&rsquo;une fonction pour indiquer que tous les param\u00e8tres suppl\u00e9mentaires seront transmis aux autres fonctions internes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>R nous donne la possibilit\u00e9, tr\u00e8s pratique, de cr\u00e9er des fonctions personnalis\u00e9es.Voici l&rsquo;architecture globale : nomdemafonction&lt;-function(variable1,variable2&#8230;){#ici on met le contenu de la fonction (g\u00e9n\u00e9ralement on effectue des transformations aux variables pass\u00e9es en argument)return(Variabledesortie)# il s&rsquo;agit du r\u00e9sultat que va renvoyer la fonction}#une fois la fonction cr\u00e9\u00e9e on peut l&rsquo;utiliser: nomdemafonction(varA,varB) Contrairement \u00e0 d&rsquo;autres languages, il n &lsquo;y a pas de contr\u00f4le du type de variable que l&rsquo;on peut utiliser. Il faudra l&rsquo;inclure dans la fonction pour, par exemple, v\u00e9rifier que la variable A est bien un vecteur (et pas un data.frame par exemple) Voici un exemple de fonction, il s&rsquo;agit d&rsquo;une fonction simple qui va<a class=\"more-link\" href=\"https:\/\/thinkr.fr\/abcdr\/comment-creer-une-fonction-dans-r-function\/\">Read More &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":{"twitter_399453572_399453572":""},"rop_publish_now_history":[],"rop_publish_now_status":"pending","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2,4,18],"tags":[],"class_list":{"0":"entry","1":"post","2":"publish","3":"author-vincent","4":"post-766","6":"format-standard","7":"category-algorithmique","8":"category-base-indispensable","9":"category-programmer-avec-r"},"acf":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p9O7Sx-cm","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/posts\/766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/comments?post=766"}],"version-history":[{"count":2,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/posts\/766\/revisions"}],"predecessor-version":[{"id":4135,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/posts\/766\/revisions\/4135"}],"wp:attachment":[{"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/media?parent=766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/categories?post=766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/tags?post=766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}