J’ai un script nommé qui inclut un autre script
, qui est dans le même répertoire :
Mais je veux de constater que
n’importe quel répertoire de travail courant.
En d’autres termes, `` a besoin de connaître sa propre voie. Comment puis-je faire ?
J’ai un script nommé qui inclut un autre script
, qui est dans le même répertoire :
Mais je veux de constater que
n’importe quel répertoire de travail courant.
En d’autres termes, `` a besoin de connaître sa propre voie. Comment puis-je faire ?
Ici il y a une solution simple au problème. Cette commande :
retourne le chemin d’accès du fichier de script actuel. Il fonctionne d’après que le script a été sauvegardé.
Vous pouvez utiliser l' commandArgs
fonction pour obtenir toutes les options qui lui ont été transmis par Rscript à l'effectif de R interprète et de faire des recherches pour --file=
. Si votre script est lancé à partir du chemin d'accès ou si elle a été lancée avec un chemin d'accès complet, script.name
ci-dessous va démarrer avec un '/'
. Sinon, il doit être relatif à l' cwd
et vous pouvez concat les deux voies pour obtenir le chemin d'accès complet.
Edit: on dirait que tu avais seulement besoin de l' script.name
- dessus et enlever le dernier élément du chemin d'accès. J'ai supprimé les inutiles cwd()
de l'échantillon et nettoyé le script principal et posté ma other.R
. Enregistrez simplement hors de ce script et l' other.R
script dans le même répertoire, chmod +x
, et d'exécuter le script principal.
principal.R:
#!/usr/bin/env Rscript
initial.options <- commandArgs(trailingOnly = FALSE)
file.arg.name <- "--file="
script.name <- sub(file.arg.name, "", initial.options[grep(file.arg.name, initial.options)])
script.basename <- dirname(script.name)
other.name <- paste(sep="/", script.basename, "other.R")
print(paste("Sourcing",other.name,"from",script.name))
source(other.name)
d'autres.R:
print("hello")
sortie:
burner@firefighter:~$ main.R
[1] "Sourcing /home/burner/bin/other.R from /home/burner/bin/main.R"
[1] "hello"
burner@firefighter:~$ bin/main.R
[1] "Sourcing bin/other.R from bin/main.R"
[1] "hello"
burner@firefighter:~$ cd bin
burner@firefighter:~/bin$ main.R
[1] "Sourcing ./other.R from ./main.R"
[1] "hello"
C'est ce que je crois dehmann est à la recherche pour.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.