Je travaille sur des tutoriels en R. Chaque code R est contenu dans un dossier spécifique. Il y a des fichiers de données et d'autres fichiers là-dedans. Je veux ouvrir le .r
fichier et le créer de manière à ne pas avoir à changer le répertoire de travail dans Rstudio comme indiqué ci-dessous:
Existe-t-il un moyen de spécifier automatiquement mon répertoire de travail dans R.
r
automation
working-directory
Stat-R
la source
la source
?setwd
?getwd
load
des fichiers .rdata dans le même dossier, passource
avec le répertoire de travail défini sur le chemin du fichier source.Réponses:
Pour obtenir l'emplacement d'un script source, vous pouvez utiliser
utils::getSrcDirectory
ouutils::getSrcFilename
. Ainsi, le changement du répertoire de travail vers celui du fichier courant peut être fait avec:Cela ne fonctionne pas dans RStudio si vous exécutez le code plutôt que le source . Pour cela, vous devez utiliser
rstudioapi::getActiveDocumentContext
.Cette seconde solution nécessite que vous utilisiez RStudio comme IDE, bien sûr.
la source
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
getActiveDocumentContext()
dans la console dans RStudio, le chemin est signalé comme''
. Cependant, si vous exécutez la ligne de code dans la partie éditeur, elle s'exécutera comme prévu. Cela peut répondre au commentaire de @Andrurstudioapi
paquet. Essayez de passer à la dernière version.Je sais que cette question est obsolète, mais je cherchais également une solution pour cela et Google la répertorie tout en haut:
mettez cela quelque part dans le fichier (le mieux serait le début, cependant), de sorte que le wd soit modifié en fonction de ce fichier.
Selon les commentaires, cela pourrait ne pas nécessairement fonctionner sur toutes les plates-formes (Windows semble fonctionner, Linux / Mac pour certains). Gardez à l'esprit que cette solution est pour «sourcer» les fichiers, pas nécessairement pour exécuter des morceaux dans ce fichier.
voir aussi obtenir le nom du fichier et le chemin du fichier `source`d
la source
Error in dirname(parent.frame(2)$ofile) : a character vector argument expected
fonctionne pour moi mais si vous ne voulez pas utiliser rstudioapi et que vous n'êtes pas dans un projet, vous pouvez utiliser le symbole ~ dans votre chemin. Le symbole ~ fait référence au répertoire de travail par défaut de RStudio (au moins sous Windows).
Si votre répertoire de travail RStudio est "D: / Documents",
setwd("~/proyect1")
est le même que setwd ("D: / Documents / proyect1").Une fois que vous définissez, vous pouvez accéder à un sous - répertoire:
read.csv("DATA/mydata.csv")
. Est le même queread.csv("D:/Documents/proyect1/DATA/mydata.csv")
.Si vous souhaitez accéder à un dossier parent, vous pouvez utiliser
"../"
. Par exemple:read.csv("../olddata/DATA/mydata.csv")
qui est le même queread.csv("D:/Documents/oldata/DATA/mydata.csv")
C'est la meilleure façon pour moi de coder des scripts, quel que soit l'ordinateur que vous utilisez.
la source
Cette réponse peut aider:
Je l'ai trouvé dans: https://support.rstudio.com/hc/communities/public/questions/200895567-can-user-obtain-the-path-of-current-Project-s-directory-
La réponse de BumbleBee (avec parent.frame à la place sys.frame) n'a pas fonctionné pour moi, j'obtiens toujours une erreur.
la source
Pour rstudio , vous pouvez définir automatiquement votre répertoire de travail sur le répertoire de script en utilisant rstudioapi comme ça:
Cela fonctionne lors de l'exécution ou de la source de votre fichier.
Vous devez d'abord installer le package rstudioapi. Notez que j'imprime le chemin pour être sûr à 100% d'être au bon endroit, mais cela est facultatif.
la source
La solution
ne fonctionne pas pour moi.
J'utilise un algorithme de force brute, mais fonctionne:
Plus facile lors de la recherche dans un répertoire:
la source
Si vous travaillez sous Linux, vous pouvez essayer ceci:
setwd(system("pwd", intern = T) )
Ça marche pour moi.
la source
pwd
fonctionne également dans PowerShell (qui est actuellement considéré comme le shell par défaut sous Windows), où il s'agit d'un alias pourGet-Location
.Je cherchais juste une solution à ce problème, je suis venu sur cette page. Je sais que c'est daté, mais les solutions précédentes étaient insatisfaisantes ou ne fonctionnaient pas pour moi. Voici mon travail si vous êtes intéressé.
la source
setwd( dirname(filepath) )
?Je me rends compte qu'il s'agit d'un ancien fil de discussion, mais j'ai eu un problème similaire avec la nécessité de définir le répertoire de travail et je n'ai pas réussi à faire fonctionner les solutions pour moi. Voici ce qui a fonctionné, au cas où quelqu'un d'autre tomberait dessus plus tard:
C'est un peu compliqué, mais fondamentalement, cela utilise des commandes système pour obtenir le répertoire de travail et l'enregistrer dans dummyfile.txt, puis R lit ce fichier en utilisant data.table :: fread. Le reste consiste simplement à nettoyer ce qui a été imprimé dans le fichier afin de ne me retrouver qu'avec le chemin du répertoire.
J'avais besoin d'exécuter R sur un cluster, il n'y avait donc aucun moyen de savoir dans quel répertoire je me retrouverais (les travaux se voient attribuer un numéro et un nœud de calcul). Cela a fait l'affaire pour moi.
la source
Je comprends que cela est obsolète, mais je ne pouvais pas faire fonctionner les premières réponses de manière très satisfaisante, donc je voulais contribuer ma méthode au cas où quelqu'un d'autre rencontrerait la même erreur que celle mentionnée dans les commentaires de la réponse de BumbleBee.
Le mien est basé sur une simple commande système. Tout ce que vous alimentez la fonction est le nom de votre script:
La sortie de la fonction ressemblerait à
"/Users/you/Path/To/Script"
. J'espère que cela aidera toute autre personne qui pourrait être coincée.la source
Le
here
package fournit lahere()
fonction, qui renvoie le répertoire racine de votre projet en fonction de certaines heuristiques.Ce n'est pas la solution parfaite, car elle ne trouve pas l'emplacement du script, mais cela suffit à certaines fins, alors j'ai pensé que je la mettrais ici.
la source
here::set_here()
dans la source.La plupart des interfaces graphiques supposent que si vous êtes dans un répertoire et que vous «ouvrez», double-cliquez ou tentez d'exécuter un fichier .R, que le répertoire dans lequel il réside sera le répertoire de travail, sauf indication contraire. L'interface graphique Mac fournit une méthode pour changer ce comportement par défaut qui est modifiable dans le panneau de démarrage des préférences que vous définissez dans une session en cours et qui devient effective au prochain "démarrage". Vous devriez également regarder:
La documentation RStudio dit:
"Lorsqu'il est lancé via une association de fichiers, RStudio définit automatiquement le répertoire de travail sur le répertoire du fichier ouvert." La configuration par défaut est que RStudio soit enregistré comme gestionnaire de fichiers .R, bien qu'il soit également mentionné la possibilité de définir une "association" par défaut avec RStudio pour les extensions .Rdata et .R. Si le statut du «gestionnaire» et celui de «l'association» sont les mêmes sous Linux, je ne peux pas le dire.
http://www.rstudio.com/ide/docs/using/workspaces
la source
ne fonctionne pas non plus pour moi, mais ce qui suit (comme suggéré dans https://stackoverflow.com/a/35842176/992088 ) fonctionne pour moi dans ubuntu 14.04
la source
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
également dans Ubuntu 14.04Si vous utilisez le codage UTF-8:
Vous devez installer le package rstudioapi si vous ne l'avez pas encore fait.
la source
Voici une autre façon de le faire:
la source