Trouver l'emplacement du fichier .R actuel
J'ai regardé à travers de nombreuses questions similaire à ceci (voir en fin de post), mais je n'ai pas trouvé toutes les solutions qui en fait accomplir ce dont j'ai besoin. Je code sous Windows ou Fedora selon le projet, et je code pour les personnes qui utilisent Windows et plusieurs distributions Linux.
Partie de mon travail est de faire de la recherche de scripts pour les personnes qui automatiquement d'analyser des données et créer des graphiques. Le plus souvent, je vais juste envoyer le script et il va générer le graphique. De cette façon, si les modifications de données ou de l'expansion, je n'ai pas besoin de ré-exécuter le script pour eux (ils peuvent aussi apporter les changements nécessaires).
Le problème est que je ne sais pas comment faire pour avoir une R-script pour savoir où lui-même se trouve. Il serait très pratique de simplement être en mesure de créer un code qui fonctionne comme suit:
- Utilisateur enregistre le script dans le dossier contenant les données, puis exécute le script.
- J'ai l'habitude de simplement un courriel à l'script de la personne que je suis travailler avec.
- Ils enregistrez le script dans un dossier contenant les données qu'ils veulent analyser et/ou graphiques.
- Idéalement, ils devraient lancer R, charge le script, puis exécutez le script.
- Script détermine son propre emplacement, puis définit que comme répertoire de travail.
- Script d'analyse de données à l'intérieur de son propre répertoire.
- Script génère un graphique(s) et les enregistre dans son propre répertoire.
Cette question ne traite que de l'Étape 2. Tout le reste découle bien aussi longtemps que je peux le faire. Il serait agréable d'avoir quelque chose comme:
setwd(FindThisScriptsLocation())
La ligne: source(..., chdir = T) a été suggéré icimais il ne peut pas être utilisé pour un script pour faire référence à lui-même, sauf si elle savait que son propre chemin.
Voici quelques questions connexes:
- Où est la .R fichier de script ... (traite de paquets)
- Comment obtenir des R de reconnaître votre répertoire de travail ... (réglage par défaut du répertoire de travail)
- Rscript: Déterminer le chemin d'accès de l'exécution du script (un script appelant les autres; pas de réponse trouvée)
source d'informationauteur Will Beason
Vous devez vous connecter pour publier un commentaire.
quelque part dans le "charger le script" processus, vous êtes de passage le nom et le chemin d'accès du script R.
Je suggère à capture que les informations et ensuite utiliser un script pour exécuter votre script principal.
Option 1 (par programmation)
le wrapper fonction qui prend comme argument le chemin d'accès et fiile nom du script à exécuter
Option 2 (interactive)
au début de votre fonction wrapper, permettre à l'utilisateur de cliquer sur le fichier:
ALORS:
et là, vous avez votre répertoire/dossier et vous pouvez exécuter votre script comme normal en passant
DIR
comme un paramètreEu le même problème, voici ce que je suis venu avec.
Il fonctionne avec une source() et rmarkdwon::render() sur windows et sur linux.
Mise à jour: la fonction get_scriptpath() est maintenant disponible dans le cadre de mon envDocument paquet sur CRAN. Voir https://cran.r-project.org/package=envDocument