La mise à jour majeure du langage R apporte de grands changements

La version 4.0.0 du langage R pour le calcul statistique a été publiée, avec des modifications de la syntaxe du langage ainsi que des fonctionnalités relatives à la vérification des erreurs et aux vecteurs longs.

La mise à jour a été publiée le 24 avril. Le code source de la R 4.0.0 est accessible sur cran.r-project.org. Un projet GNU, R a pris de l'ampleur avec l'essor de la science des données et de l'apprentissage automatique, se classant actuellement 10e dans l'indice Tiobe de popularité des langues et septième dans l'indice PyPL Popularité du langage de programmation.

Vidéo connexe: Nouvelles fonctionnalités de la R 4.0

Les changements et fonctionnalités introduits dans R 4.0.0 incluent:

  • Une nouvelle syntaxe est proposée pour spécifier des constantes de caractères _raw_ similaires à celle utilisée en C ++, où  r"..."peut être utilisée pour définir une chaîne littérale. Cela facilite l'écriture de chaînes contenant des barres obliques inverses ou des guillemets simples et doubles.
  • Le langage utilise désormais une stringAsFactors = FALSEvaleur par défaut et ne convertit donc plus par défaut les chaînes en facteurs dans les appels à data.frame()et read.table(). De nombreux packages s'appuyaient sur le comportement précédent et devront être mis à jour.
  • La fonction générique S3 plot()est maintenant dans la base du package plutôt que dans les graphiques du package; il est raisonnable d'avoir des méthodes qui n'utilisent pas le package graphique. Le générique est actuellement réexporté depuis l'espace de nom graphique pour permettre aux packages qui l'importent de continuer à fonctionner, mais cela pourrait changer à l'avenir. Les packages qui définissent les graphiques S4 pour plot()doivent être réinstallés et le code de package utilisant de tels génériques provenant d'autres packages doit s'assurer qu'ils sont importés plutôt que d'être recherchés sur le chemin de recherche.
  • Les méthodes S3 pour le tableau de classes sont désormais distribuées pour les objets de matrice.
  • Le comptage de références est maintenant utilisé au lieu du mécanisme NAMED pour déterminer quand les objets peuvent être mutés en toute sécurité en code C de base. Cela réduit le besoin de copier dans certains cas et devrait permettre des optimisations futures. Il devrait également faciliter la maintenance du code interne.
  • assertError()et assertWarning()dans les packages, les outils peuvent désormais vérifier les classes d'erreur ou d'avertissement spécifi ques  via le nouveau second argument optionnel classes.
  • DF2formula(), l'utilitaire de la méthode de trame de données formula(), fonctionne désormais sans analyse et évaluation explicite.
  • Les vecteurs longs sont désormais pris en charge comme seqargument d'une for()boucle.
  • matrix() convertit désormais les colonnes de caractères en facteurs et les facteurs en nombres entiers.
  • skeleton() répertorie désormais explicitement toutes les exportations dans le fichier NAMESPACE.
  • La mise en œuvre interne des unités de réseau a changé. Les seuls effets visibles au niveau de l'utilisateur devraient être un format d'impression légèrement différent pour certaines unités, des performances plus rapides pour les opérations de l'unité et deux nouvelles fonctions, unitType()et unit.psum().
  • L'impression methods (..)utilise désormais une nouvelle format()méthode.
  • Les packages doivent être réinstallés sous la nouvelle version de R.
  • Cette version de R est basée sur la bibliothèque PCRE2 pour les expressions régulières de type Perl si disponible.
  • Les débuts de la prise en charge de C ++ 20.
  • Le temps nécessaire pour démarrer un cluster PSOCK homogène sur localhost avec de nombreux nœuds a été considérablement réduit.
  • Il existe également un certain nombre de dépréciations. Par exemple, la macro make F77_VISIBILITY a été supprimée et remplacée par F_VISIBILITY; la prise en charge obsolète de la spécification de C ++ 98 pour l'installation des packages a été supprimée; et de nombreuses fonctions obsolètes ont été supprimées des packages de base et de méthodes.