R (langage)

De wikiducamp
Aller à : navigation, rechercher


Page d'aide sur l'homonymie Pour les articles homonymes, voir R.
R
Logo.

Date de première version Voir et modifier les données sur Wikidata
Paradigmes Programmation multi-paradigmes : orientée objet, impérative, fonctionnelle, procédurale, réflexive
Auteur Ross Ihaka et Robert Gentleman
Développeurs R Core Team
Dernière version 3.5.0 (Joy in Playing, )[1],[2]Voir et modifier les données sur Wikidata
Typage dynamique
Influencé par S, Scheme, Common Lisp, xLispStat
A influencé Julia
Écrit en C, Fortran et RVoir et modifier les données sur Wikidata
Système d'exploitation Multiplate-forme
Licences GNU GPL
Site web www.r-project.orgVoir et modifier les données sur Wikidata
Extensions de fichiers .r, .R, .RDATA, .rds, .rda

R est un langage de programmation et un logiciel libre dédié aux statistiques et à la science des données soutenu par la R Foundation for Statistical Computing. R fait partie de la liste des paquets GNU[3] et est écrit en C (langage), Fortran et R.

GNU R est un logiciel libre distribué selon les termes de la licence GNU GPL et disponible sous GNU/Linux[4], FreeBSD[5], NetBSD[6], OpenBSD[7], Mac OS X[8] et Windows[9].

Le langage R est largement utilisé par les statisticiens, les data miner, data scientist pour le développement de logiciels statistiques et l'analyse des données.

En Mai 2018, R est classé 11e dans l'index TIOBE qui mesure la popularité des langages de programmation[10].

Histoire

R dans un Terminal sous Linux.

R est une implémentation du langage de programmation S avec l'ajout de la portée lexicale, inspiré du Scheme, et du ramasse-miettes (informatique)[11].

Le langage S a été développé par John Chambers et ses collègues au sein des laboratoires Bell.

Le projet R naît en 1993 comme un projet de recherche de Ross Ihaka et Robert Gentleman à l'université d'Auckland (Nouvelle-Zélande)[12],[13].

Depuis 1997, une vingtaine de développeurs forment l'équipe de développement de R (R Development Core team). Les membres de cette équipe ont les droits d'écriture sur le code source[14]. Le débute le Comprehensive R Archive Network (CRAN) puis le , R est intégré au Projet GNU.

La version R 1.0.0, première version officielle du langage R, est publiée le [12],[15].

En 2003, l'équipe de développement crée la R Foundation for Statistical Computing pour soutenir le projet R et devenir un point de contact de référence pour ceux qui veulent prendre contact avec la communauté R[12],[16]. A ce moment, le langage compte plus de 200 bibliothèques développées par la communauté scientifique qui utilise R[13].

La version 2.0 est publiée le [17] et la version 3.0 le [18].

En 2015, plusieurs acteurs économiques importants comme IBM, Microsoft ou encore la société RStudio créent le R Consortium pour soutenir la communauté R et financer des projets autour de ce langage[19].

Distributions

La distribution la plus connue du langage R est celle du R Project et du Comprehensive R Archive Network (CRAN). Il existe d'autres distributions comme la distribution proposée par Microsoft[20] ou encore celle de l'entreprise Oracle, Oracle R Distribution[21],[22].

Implémentations

L'implémentation la plus connue du langage R est le logiciel GNU R mis à disposition par le R Project[23].

Il existe des projets expérimentaux comme le projet Rho visant à développer des versions plus rapides du langage R[24].

Interfaces

R avec l'environnement de développement intégré RStudio.

RStudio est un environnement de développement intégré qui permet de travailler en R, développer de nouvelles bibliothèques et travailler avec des notebooks.

R existe aussi sur Microsoft Visual Studio[25].

Jupyter est une application web permettant de développer des notebooks en Python, Julia ou en R.

Les fonctionnalités de R sont accessibles depuis d'autres langages comme Python (langage), Perl (langage), ruby, Julia (langage).

Communauté

Communauté des contributeurs

R dispose d'un très grand nombre de librairies développées par une communauté de contributeurs. À titre d'exemple, le site RDocumentation.org recense plus de 15 000 librairies sur le Comprehensive R Archive Network (CRAN), GitHub et Bioconductor (en) en mai 2018[26].

Le projet Bioconductor comprend à lui seul plus de 1 000 librairies permettant aux chercheurs en biostatistique d'analyser et décrypter le génome[13].

Communauté des utilisateurs

Une enquête menée par Rexer Analytics auprès de 1 300 analystes retrouve que R est le logiciel le plus souvent utilisé lorsqu'il s'agit d'un travail en entreprise, dans le monde académique, au sein d'organismes publics ou d'ONG et chez les analystes travaillant comme consultants[27].

Sur Twitter, la communauté se rassemble autour du hashtag rstats[28].

Sur Stack Overflow, il existe une importante communauté autour du tag R[29]. Il existe également une importante blogosphère autour de l'agrégateur R-Bloggers.

RStudio a lancé son site de questions & réponses autour de R[30].

Des rencontres entre utilisateurs sont régulièrement organisées[31],[32].

Conférence UseR!

La réunion officielle des utilisateurs de R a lieu chaque année et se nomme "useR"[33]. La première édition a eu lieu à Vienne (Autriche)[34]. Alternant traditionnellement Europe et Amérique chaque année, elle a lieu pour la première fois en Australie en 2018.

Depuis plusieurs conférences ont eu ou auront lieu[35] :

  • useR! 2006, Vienne, Autriche
  • useR! 2007, Ames, Iowa, États-Unis
  • useR! 2008, Dortmund, Allemagne
  • useR! 2009, Rennes, France
  • useR! 2010, Gaithersburg, Maryland, États-Unis
  • useR! 2011, Coventry, Royaume-Uni
  • useR! 2012, Nashville, Tennessee, États-Unis
  • useR! 2013, Albacete, Espagne
  • useR! 2014, Los Angeles, États-Unis
  • useR! 2015, Aalborg, Danemark
  • useR! 2016, Stanford, Californie, États-Unis
  • useR! 2017, Bruxelles , Belgique
  • useR! 2018, Brisbane, Australie
  • useR! 2019, Toulouse, France
  • useR! 2020, Boston, États-Unis

The R Journal

The R Journal est un journal en accès libre dédié à R. On y trouve des articles courts à moyens sur l'utilisation et le développement de R, y compris des librairies, des conseils sur la programmation, des nouvelles du CRAN et des nouvelles de la fondation[36].

Fonctionnalités

R est un langage interprété où les utilisateurs utilisent une interface en ligne de commande. R permet la programmation procédurale et avec certaines fonctions la programmation orientée objet. Les tableaux (structure de données) sont rangés par column-major order (en).

Bibliothèques logicielles

La page R Task Views du Comprehensive R Archive Network donne une idée de l'étendue des fonctionnalités et des usages du langage R[37].

Lecture et importation des données

  • ReadR fournit un moyen rapide et convivial de lire les données rectangulaires (comme csv, tsv et fwf). Il est conçu pour analyser avec souplesse de nombreux types de données tout en continuant d'échouer lorsque les données changent de façon inattendue[38].
  • Xml2 pour les fichiers xml[39]
  • Rjson pour les objets JSON[40]
  • La librairie Sparklyr permet une interface entre R et Apache Spark[41].
  • La librairie Readxl permet de lire les fichiers Excel avec R.[42]

Manipulation et transformations des données

Les librairies suivants font partie d'une collection de librairies tidyverse développées par Hadley Wickham et RStudio :

  • Dplyr définit une grammaire de la manipulation des données, fournissant un ensemble cohérent de verbes qui résolvent les défis les plus courants de manipulation des données[43].
  • Tidyr fournit un ensemble de fonctions qui vous aident à obtenir des données bien rangées. Les données ordonnées "tidy" sont des données avec une forme cohérente: en bref, chaque variable va dans une colonne et chaque colonne est une variable[44].
  • ReadR fournit un moyen rapide et convivial de lire les données rectangulaires (comme csv, tsv et fwf). Il est conçu pour analyser avec souplesse de nombreux types de données tout en continuant d'échouer lorsque les données changent de façon inattendue[38].
  • Purrr fournit un ensemble complet et cohérent d'outils pour travailler avec des fonctions et des vecteurs. Une fois que vous maîtrisez les concepts de base, purrr vous permet de remplacer beaucoup de boucles avec du code qui est plus facile à écrire et plus expressif.[45]
  • Tibble améliore les "data frames"[46]
  • Glue, une alternative à la fonction paste() qui rend plus simple de combiner données et chaines de caractères[47].
  • Forcats pour les variables qualitatives[48].

Data.table est une alternative fournissant une version performante des data.frame avec des améliorations syntaxiques et des fonctionnalités pour une facilité d'utilisation, une commodité et une rapidité de programmation[49].

Text mining ou fouille de textes

Stringr et Tidytext appartiennent au Tidyverse et améliore la gestion des chaines de caractères[50]. Il existe aussi Stringi[51].

Séries temporelles

Lubridate appartient à Tidyverse et améliore la gestion des dates et heures[52]. Il existe aussi la librairie Xts[53] , ou encore Zoo pour les séries temporelles irrégulières[54].

Visualisation des données

Ggplot2 appartient à Tidyverse et définit une grammaire des graphiques permettant de combiner différentes couches graphiques[55]. La libraires Scales permet de gérer la mise en forme (étiquettes, échelle, etc.) d'un graphique[56]

Reproductibilité

La librairie Rmarkdown permet de combiner des sections de texte mises en forme en markdown et des sections de code en R[57] pour réaliser des rapports au format Microsoft Word ou PDF, des présentations au format Beamer ou HTML5 (slidy.js ou reveal.js), des pages web, des sites web complets, des blogs[58] ou même des ouvrages entiers[59].

Le langage Sweave permet de combiner des sections de code en LaTeX et des sections de code en langage R pour produire des publications scientifiques directement depuis R.

Interactivité

La librairie Shiny développé par la société RStudio permet de réaliser des applications web interactives en langage R.[60]

La librairie Plotly permet de transformer des graphiques construits avec la libraririe Ggplot2 en une version web/interactive via plotly.js[61]

La librairie DT permet une interface avec la librairie javascript DataTables[62]

Cartes

La librairie Leaflet permet de représenter des données géographiques sur des cartes interactives à l'aide de la bibliothèques JavaScript Leaflet[63].

RCpp et performance

Rcpp permet une intégration entre R et C++[64]

Les librariries Microbenchmark[65] ou Rbenchmark[66] permettent d'évaluer les performances.

Autres

La librairie Devtools existe pour les développeurs de librairies[67]. Elle permet notamment de charger des librairies hébergées sous GitHub.

La librairie Reticulate permet une interface entre R et Python[68].

Exemples

Syntaxe

L'affectation (informatique) se fait avec <- ou = mais le premier est préféré[69]

> x <- c(1, 2, 3, 4, 5 ,6) # Un vecteur ordonné

> print(x) # Affiche le vecteur
[1] 1 2 3 4 5 6

> x[1] # le premier élément
[1] 1

> x[0] 
numeric(0)# Les indices commencent à 1

> x[1:3] # Les 3 premiers éléments
[1] 1 2 3

> (y <- x^2) # Les valeurs de x au carré. Les deux parenthèses permettent d'afficher le résultat
[1]  1  4  9 16 25 36

Structure d'une fonction

nomdelafonction <- function(arg1, arg2, ... ){ # Déclaration du nom de la fonction et de ses arguments
  code                               
  return(object)                          
}

sommedescarres <- function(x){ # Exemple de fonction
  return(sum(x^2))           # Renvoie la somme des carrés des éléments de x
}

Prix et distinctions

Notes et références

  1. https://stat.ethz.ch/pipermail/r-announce/2018/000628.html
  2. https://cran.cnr.berkeley.edu/src/base/R-3/
  3. « Logiciels GNU »
  4. (en) « Linux R »
  5. (en) « R FreeBSD »
  6. (en) « R netBSD »
  7. (en) « R openBSD »
  8. « R for Mac OS X », sur cran.r-project.org (consulté le 24 janvier 2018)
  9. « Download R-3.4.3 for Windows. The R-project for statistical computing. », sur cran.r-project.org (consulté le 24 janvier 2018)
  10. « TIOBE Index | TIOBE - The Software Quality Company », sur www.tiobe.com (consulté le 30 mai 2018)
  11. (en) « Evaluating the Design of the R Language »
  12. a, b et c « Over 16 years of R Project history », sur Revolution Analytics Blog (consulté le 18 février 2017)
  13. a, b et c Tippmann 2015
  14. « Contributors », sur R-project.org (consulté le 18 février 2017)
  15. « R-1.0.0 is released », sur hypatia.math.ethz.ch (consulté le 16 mai 2018)
  16. « The R Foundation », sur R-project.org (consulté le 18 février 2017)
  17. « R 2.0.0 is released », sur stat.ethz.ch (consulté le 15 mars 2018)
  18. « R 3.0.0 is released », sur stat.ethz.ch (consulté le 15 mars 2018)
  19. https://www.r-consortium.org/about
  20. Microsoft R Open
  21. Oracle R Distribution
  22. Oracle R Technologies
  23. (en) Hadley Wickham, « Performance », dans Advanced R (lire en ligne)
  24. https://github.com/rho-devel/rho
  25. « Outils de développement R | Visual Studio », sur www.visualstudio.com (consulté le 23 janvier 2018)
  26. « RDocumentation », sur RDocumentation.org (consulté le 31 mai 2018)
  27. (en) David Smith, « R users: Be counted in Rexer's 2013 Data Miner Survey », Revolution Analytics Blog,‎ (lire en ligne).
  28. https://twitter.com/hashtag/rstats?lang=fr
  29. Tag R sur Stack Overflow, mais également sur le site parent consacré aux statistiques, Cross Validated
  30. (en) « Rstudio community »
  31. « Meetups Calcul statistique avec R - Meetup », sur www.meetup.com (consulté le 31 mai 2018)
  32. (en-US) « R-Ladies Global – R-Ladies is a world-wide organization to promote gender diversity in the R community », sur rladies.org (consulté le 31 mai 2018)
  33. (en) « R conferences »
  34. « useR! 2004 », sur www.ci.tuwien.ac.at (consulté le 26 janvier 2018)
  35. (en) « R: Conferences », sur www.r-project.org (consulté le 26 janvier 2018)
  36. (en) « The R Journal »
  37. https://cran.r-project.org/web/views/
  38. a et b (en) « Readr »
  39. (en) « xml2 »
  40. (en) « Rjson »
  41. (en) « sparklyr »
  42. (en) « readxl »
  43. (en) « dplyr »
  44. (en) « tidyr »
  45. (en) « purrr »
  46. (en) « tibble »
  47. (en) « tidyverse/glue », sur GitHub (consulté le 15 mars 2018)
  48. (en) « forcats »
  49. (en) « data.table »
  50. (en) « stringr »
  51. (en) « stringi »
  52. (en) « lubridate »
  53. (en) « xts »
  54. (en) « zoo »
  55. (en) « ggplot2 »
  56. (en) « scales »
  57. « R Markdown », sur rmarkdown.rstudio.com (consulté le 23 janvier 2018)
  58. (en) « blogdown »
  59. (en) « bookdown »
  60. « Shiny », sur shiny.rstudio.com (consulté le 23 janvier 2018)
  61. (en) « plotly »
  62. (en) « DT »
  63. (en) « leaflet »
  64. (en) « RCpp »
  65. (en) « microbenchmark »
  66. (en) « Rbenchmark »
  67. (en) « devtools »
  68. « Interface to 'Python' », sur rstudio.github.io (consulté le 31 mai 2018)
  69. « Writing R Extensions », sur cran.r-project.org (consulté le 7 février 2018)
  70. « R », sur Information is Beautiful Awards (consulté le 26 février 2017)

Bibliographie

  • (en) Ross Ihaka et Robert Gentleman, « R: A language for data analysis and graphics », Journal of Computational and Graphical Statistics, vol. 5,‎ , p. 299-314
  • (en) Ashley Vance, « Data Analysts Captivated by R’s Power », The New York Times,‎ (lire en ligne)
  • (en) Sylvia Tippmann, « Programming tools: Adventures with R », Nature, vol. 517,‎ , p. 109–110 (DOI 10.1038/517109a)
  • (en) Hadley Wickham, ggplot2 : Elegant Graphics for Data Analysis, Springer, coll. « Use R »,
  • (en) Hadley Wickham, Advanced R, Chapman & Hall/CRC, coll. « The R Series », 1re éd. (lire en ligne)
  • (en) Hadley Wickham, R Packages : Organize, Test, Document, and Share Your Code, O'Reilly Media, (lire en ligne)
  • (en) Garrett Grolemund et Hadley Wickham, R for Data Science, O'Reilly, (lire en ligne)
  • Millot Gaël, Comprendre et réaliser les tests statistiques à l'aide de R, Éditions De Boeck, , 806 p. (présentation en ligne)
  • Husson F, Pagès J et Lê S, Analyse de données avec R, Presses Universitaires de Rennes
  • (en) Julia Silge et David Robinson, Text Mining with R : A Tidy Approach, O'Reilly, (lire en ligne)

Voir aussi

Sur les autres projets Wikimedia :

Articles connexes

Liens externes