La première chose à laquelle j'ai dû faire face a été le débogage de l'application. Dans RStudio, il est possible de sélectionner des sections individuelles du code et de les exécuter. Cela aide beaucoup lorsque vous travaillez avec R markdown, car vous ne pouvez pas définir de point d'arrêt en mode débogage. Et vous pouvez sélectionner des lignes et les exécuter n'importe où.
De plus, il prend les variables qui seront appelées dans ces lignes de l'environnement global. Il s'avère que pour vérifier le fonctionnement de telle ou telle fonction, il suffit de créer des variables globales, d'exécuter le code de ces fonctions ligne par ligne et de regarder ce qui se passe. Je travaille dans RStudio, où vous pouvez voir les valeurs de ces variables dans l'onglet Environnement global.
Ils créent ou modifient les valeurs de ces variables via la console.
Mais en plus des variables, il y a un autre problème. Lorsque vous exécutez des commandes ligne par ligne, il se peut qu'il ne trouve pas le code des fonctions appelées dans les lignes que vous exécutez. Pour ce faire, ils doivent également être chargés en mémoire. Pour ce faire, vous devez ouvrir le fichier avec le code de cette fonction et cliquer sur le bouton Source.
Il existe également un mode de débogage classique dans RStudio. Il a la capacité de définir des points d'arrêt, avec la possibilité de s'exécuter en mode débogage et la fonction browser (), lorsqu'il rencontre quel R interrompt l'exécution du code, vous permettant de déboguer l'application. Mais dans notre projet, cela n'a pas été largement utilisé en raison du travail avec le markdown R.
La prochaine chose que j'ai rencontrée dans R est deux types de projets: un projet normal (New Project) et un projet de type package (R Package). Quand j'ai rejoint l'équipe, il y avait un mélange de ces 2. Il semblait qu'il y avait un package, mais il n'allait pas être construit et nous l'avons lancé via RScrtipt. Maintenant, grâce aux efforts de mes collègues, nous avons un paquet R fonctionnel.
Un projet standard (New Project) propose d'écrire des fichiers R-script, où un fichier est connecté à un autre via la fonction source (). Ainsi, lorsque vous exécutez le script, il ressemble à «un très gros fichier», qui comprend tous les fichiers du projet. Ce n'est pas toujours pratique et pas très flexible.
Contrairement à un projet classique, un projet de type R Package nous invite à écrire une bibliothèque de fonctions en R, qui peut ensuite être installée sur n'importe quelle machine et appeler ces fonctions dans notre fichier de script R. Il y a vraiment une mise en garde. Les fonctions ne sont disponibles qu'à partir du script R. Par conséquent, avant de commencer à travailler avec eux, vous devrez créer un tel script et y écrire des appels à ces fonctions. Il est lancé dans la console à l'aide de la commande: Rscript. Pour que cela fonctionne, vous devez enregistrer le chemin d'accès au fichier Rscript.exe dans les variables d'environnement. Sur ma machine, ce chemin ressemble à ceci: C: \ Program Files \ R \ R-4.0.3 \ bin... Lors de la création de vos propres fonctions dans un projet de type Package, en mode développement, vous devez utiliser la fonction load_all (), qui récupère toutes les modifications en mémoire. Si vous ne l'utilisez pas, chaque fois que vous modifiez le code du projet, pour que ces modifications prennent effet, vous devez démarrer le processus d'installation, ce que R ne fait pas rapidement.
Maintenant sur le projet R-Package: contrairement à un projet simple, il contient une certaine structure requise et des fichiers spéciaux. Il:
- Fichier DESCRIPTION avec description du package,
- dossier man pour les descriptions des fonctions,
- Fichier NAMESPACE avec une liste des fonctions disponibles du package créé,
- un dossier appelé R, qui doit contenir votre code R
- .Rbuildignore ,
- .Rhistory,
- .RData Environment,
.Rhistory et .RData sont présents à la fois dans un projet Package et dans un projet normal. Vous pouvez également créer un dossier inst pour des ressources supplémentaires et un dossier de test pour les tests unitaires. Pour plus de détails sur le fonctionnement du package R et pourquoi il fonctionne de cette façon, vous pouvez suivre le lien .
Lors de la création d'un projet R Package, l'utilitaire roxygen2 est utilisé. Il vous aide à créer la documentation de votre package. L'idée est que vous décrivez chaque fonction directement dans le code, et l'utilitaire lui-même transfère cette description dans le dossier man, en la convertissant au format requis et en ajoutant des informations sur les fonctions au fichier NAMESPACE. En savoir plus sur roxygen2 ici .
Il existe également des packages utiles pour la mise en place d'un projet, qui sont utilisés dans presque toutes les instructions de création, du moins dans toutes celles que j'ai trouvées sur Internet:
- devtools - le package principal, qui contient la plupart des commandes pour travailler avec le projet dans leur forme simplifiée
- il s'agit d'un package d'aide qui simplifie de nombreuses opérations de routine
- testthat - un package pour écrire des tests unitaires
- covr - paquet pour vérifier le code pour la couverture de test unitaire
Tous les packages publics avec leurs descriptions et documentation pour le langage R sont stockés dans CRAN - The Comprehensive R Archive Network (https://cran.r-project.org/)
Pour plus de commodité, RStudio a déjà des outils intégrés pour vérifier un nouveau a créé le projet (Check Package) et le teste (Test Package).
Il semble qu'il a dit tout ce qu'il voulait, mais il vaut mieux voir une fois que lire cent fois. Ci-dessous, une vidéo expliquant comment démarrer avec R:
- Premiers pas avec R sur RStudio. Projet R ou package R
- Création d'un projet de package R avec des tests unitaires et de la documentation
- Exécution et débogage du code R pour un projet de package R
D'après mon expérience, se retrouver sur un projet avec un nouveau langage de programmation, le plus souvent, le plus gros problème n'est pas le langage lui-même, mais les outils pour travailler avec lui, les outils de configuration et les paramètres d'environnement. Espérons qu'après avoir lu cet article, il sera beaucoup plus facile pour beaucoup de commencer avec R.