Essentiellement, j'ai construit un modèle prédictif important en R avec environ 10 à 15 fichiers de script séparés pour collecter, trier, analyser et présenter mes données. Plutôt que de tout mettre dans un seul fichier de script gigantesque, je voudrais maintenir un certain niveau de modularité et exécuter chaque pièce à partir d'un script de contrôle, ou d'une sorte de mécanisme de contrôle comparable, comme je l'ai fait dans matlab auparavant. Est-ce possible dans R?
J'ai lu ce fil ainsi que ses fils associés, mais je n'ai pas trouvé cette réponse exacte. Organisation du code source R
Je pense que vous recherchez simplement la fonction source
. Voir ?source
. J'ai souvent un script maître qui source
autre .R
des dossiers.
Je suis un nouveau développeur et je réponds avec un exemple qui a fonctionné pour moi car personne n'a donné d'exemple. Un exemple d'utilisation de source ("myscript.R"), pour appeler un autre script R "myscript_A.R" ou "myscript_B.R" est le suivant-
if(condition==X){
source("myscript_A.R")
}else{
source("myscript_B.R")
}
J'ai fait ce que vous avez décrit et fractionné des morceaux de code dans des fichiers R séparés et j'ai exécuté la source (ceci) et la source (cela), mais j'ai douloureusement appris que les fonctions de sourcing (plutôt que les sous-routines/fichiers de script) sont la meilleure façon de procéder.
Voici 3 raisons possibles pour lesquelles nous aurions pu développer leurs scripts de cette manière et y rester, et 3 raisons pour lesquelles le passage aux fonctions est logique:
1) Nous voulions déboguer directement quand un script avait mal tourné (pouvoir suivre toutes les variables et leur état dans l'environnement global unique).
2a) Nous ne savions pas quelles variables devaient être conservées pour plus tard (nous ne voulions pas savoir quelles variables mettre dans les fonctions et quelles variables sortir des fonctions)
2b) Nous avons un grand nombre de variables pour tout (paramètres/variables, réglages, différentes parties de données), il est donc impossible de tout ranger dans et hors des fonctions.
SO connexe:
Bien que je comprenne votre besoin de modularité, pourquoi ne pas simplement créer un script unique pour la course qui vous intéresse. L'approvisionnement de plusieurs scripts entraîne la complexité de ne pas pouvoir transmettre des variables entre les scripts, sauf si vous écrivez dans des fichiers (ce qui gaspille les cycles de processeur). Vous pouvez même créer un script maître qui lirait le contenu textuel de chaque script, puis créer le script maître, puis exécuter ce script.