2016-11-21 3 views
4

J'ai mis à jour vers RStudio 1.0.44 et il semble que knitr :: opts_knit $ set (root.dir = path) où path est mon répertoire ne fonctionne pas comme avant. Il lance un message:

The working directory was changed to /... inside a notebook chunk. The working 
directory will be reset when the chunk is finished running. Use the knitr 
root.dir option in the setup chunk to change the the working directory for 
notebook chunks. 

Ce message apparaîtra maintenant dans chaque commande suivante. Notez que je ne suis pas encore en train de tricoter le rmd. Je suis juste en train d'exécuter des commandes. Définir le répertoire de travail directement en ligne de commande via setwd() renvoie le chemin correct dans getwd() mais le chargement d'un fichier avec le chemin relatif (./...) retournerait le message ci-dessus. La même commande fonctionne correctement avec RStudio 0.99.896. Qu'est-ce que je rate?

sessionInfo() 

R version 3.3.0 (2016-05-03) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
>Running under: Windows 7 x64 (build 7601) Service Pack 1 

other attached packages: 
[1] scales_0.4.0  ggplot2_2.1.0 xtable_1.8-2  data.table_1.9.6 
[5] dplyr_0.4.3  knitr_1.15  pander_0.6.0 
+2

J'ai eu le même problème. Avez-vous résolu le vôtre?Comment? –

+0

salut, pas résolu et personne (de @ RStudio) a répondu non plus. voir ma propre réponse/explication ci-dessous. mais ce n'est pas satisfaisant. – Triamus

+0

mais effectivement cela signifie que je ne peux actuellement pas utiliser le nouveau RStudio avec mon ancien flux de travail car il ne me laisserait pas changer le répertoire de travail avec une seule ligne d'exécution via ctrl + r. il retournerait le bon répertoire via getwd() mais par ex. dans un relatif data.table :: fread ("./ mon_fichier"), il essayerait de trouver le fichier où le rmd est stocké pas dans le répertoire de travail que j'ai juste changé. Je ne vois pas comment les gens qui partagent le code et les données dans différents répertoires de travail peuvent maintenant travailler interactivement dans la démarque RStudio? – Triamus

Répondre

3

Vous pouvez modifier le répertoire de travail avec:

```{r "setup", include=FALSE} 
knitr::opts_knit$set(root.dir = getwd()) # with something else than `getwd()` 
``` 

comme décrit au bas du dedicated page sur le site .

Mais Restart R and run all chunks (accessible dans l'onglet "Exécuter>" dans RStudio) a résolu le même problème sur ma machine.

Est-ce que cela aide? Pour autant que je puisse le voir, le comportement des fichiers rmd a changé dans le nouveau rstudio

+0

Je pense que le problème vient d'une direction différente, à savoir le nouveau comportement de rmd en cas d'exécution d'une seule ligne via ctrl + r dans un bloc de code. vois ma propre réponse. – Triamus

+1

Il semble que le morceau doit être appelé 'setup' est-ce normal? Le chemin n'a pas changé lorsque j'utilisais d'autres noms de morceaux. –

1

seul l'exécution d'une ligne dans un segment via ctrl + r donnera un message comme décrit dans la question OPs. la combinaison de touches ctrl + shift + enter entraîne plutôt l'exécution d'un segment particulier. il semble donc que je ne puisse pas exécuter une seule ligne dans un fichier rmd et que sa sortie soit écrite sur la console.

1

J'ai mis mon fichier Rmd dans doc/file.rmd et le fichier de code R dans R/code.r, et le fichier de projet est le dossier actuel .. Lorsque je tricote le fichier Rmd, knitr::opts_knit$set(root.dir = "..") ne fonctionne pas, mais seated("..") fonctionne.

Je viens de trouver que j'ai mis source(R/code.r) dans le même premier morceau d'installation comme knitr::opts_knit$set(root.dir = ".."). C'est-à-dire:

```{r "setup", include=FALSE} 
knitr::opts_knit$set(root.dir = "..") 
source(R/code.r) 
``` 

Lorsque je le scinde en deux morceaux, cela fonctionne maintenant. C'est:

```{r "setup", include=FALSE} 
knitr::opts_knit$set(root.dir = "..") 
``` 

```{r "source"} 
source(R/code.r) 
``` 

Je ne sais pas si c'est votre problème. Je l'ai mis ici juste au cas où quelqu'un ou futur moi-même fait la même erreur idiote.

+0

ce n'est pas exactement mon problème, mais peut-être un problème de mon avenir, donc vraiment bon à savoir! – Triamus

0

J'ai également rencontré ce comportement. La solution est d'utiliser normalizePath():

```{r setup, include=FALSE} 
knitr::opts_knit$set(root.dir = normalizePath("..")) 
``` 

EDIT

Il se trouve ce ne fut pas le correctif. Mais puisque cela apparaît beaucoup dans les recherches google, j'ai finalement découvert que le morceau où vous configurez les paramètres knitr ne doit pas exécuter votre code.

Vous devez rechercher vos scripts à partir d'autres blocs. Cela va résoudre le problème.

Ceci est documenté here.