2016-11-21 2 views
4

Ich habe auf RStudio 1.0.44 aktualisiert und es scheint knitr :: opts_knit $ set (root.dir = Pfad) wo Pfad ist mein Verzeichnis funktioniert nicht wie vorher. Es wird eine Nachricht gesendet:

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. 

Diese Nachricht wird jetzt in jedem folgenden Befehl angezeigt. Beachten Sie, dass ich die RMD noch nicht stricke. Ich führe nur Befehle aus. Das Festlegen des Arbeitsverzeichnisses direkt in der Befehlszeile über setwd() gibt den korrekten Pfad in getwd() zurück, aber das Laden einer Datei mit dem relativen Pfad (./...) würde wieder über die Nachricht hinausgehen. Das selbe rmd funktioniert gut mit RStudio 0.99.896. Was vermisse ich?

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

Ich habe das gleiche Problem. Hast du deine gelöst?Wie? –

+0

hi, nicht gelöst und niemand (von @ RStudio) antwortete entweder. Siehe meine eigene Antwort/Erklärung unten. aber es ist nicht befriedigend. – Triamus

+0

aber effektiv bedeutet es, dass ich das neue RStudio derzeit nicht mit meinem alten Workflow verwenden kann, da ich das Arbeitsverzeichnis nicht mit einer einzigen Zeilenausführung über Strg + r ändern lassen würde. Er würde das korrekte Verzeichnis über getwd() zurückgeben, aber z.B. in einem relativen data.table :: fread ("./ my_file") würde er versuchen, die Datei zu finden, in der der rmd gespeichert ist, nicht in dem Arbeitsverzeichnis, das ich gerade geändert habe. Ich sehe nicht, wie Leute, die Code und Daten in verschiedene Arbeitsverzeichnisse aufteilen, jetzt interaktiv in RStudio Abschriften arbeiten können? – Triamus

Antwort

3

Sie können das Arbeitsverzeichnis ändern mit:

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

wie im unteren Teil der dedicated page in Website beschrieben.

Aber Restart R and run all chunks (zugänglich in der Registerkarte "Ausführen>" in RStudio) behoben das gleiche Problem auf meinem Rechner.

Hilft das?

+0

Ich denke, das Problem kommt aus einer anderen Richtung, nämlich das neue Verhalten von rmd im Falle der Einzelzeilenausführung über Strg + R in einem Code-Chunk. sehe meine eigene Antwort. – Triamus

+1

Es scheint, dass der Brocken "Setup" genannt wird, ist das normal? Der Pfad änderte sich nicht, wenn ich andere Chunk-Namen verwendete. –

1

Soweit ich sehen kann, hat sich das Verhalten von RMD-Dateien im neuen Studio geändert. Wenn nur eine Zeile in einem Chunk mit Strg + R ausgeführt wird, wird die Nachricht wie in der OP-Frage beschrieben angezeigt. Vielmehr führt die Tastenkombination Strg + Shift + Enter zur Ausführung eines bestimmten Chunks. es scheint also, dass ich keine einzige Zeile in einem RMD ausführen kann und seine Ausgabe in die Konsole geschrieben habe.

1

Ich legte meine Rmd-Datei in doc/file.rmd und R-Code-Datei in R/code.r, und die Projektdatei ist der aktuelle Ordner .. Wenn ich die Rmd-Datei stricke, funktioniert knitr::opts_knit$set(root.dir = "..") nicht, aber seated("..") funktioniert.

Ich finde nur, dass ich source(R/code.r) in der gleichen ersten Setup-Chunk wie knitr::opts_knit$set(root.dir = "..") setzen. Das ist:

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

Wenn ich es in zwei Teile aufteilen, funktioniert es jetzt. Das ist:

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

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

Ich bin mir nicht sicher, ob das Ihr Problem ist. Ich lege es hier hin, nur für den Fall, dass jemand oder die Zukunft selbst den gleichen dummen Fehler macht.

+0

das ist nicht genau mein Problem, aber möglicherweise ein Problem meiner Zukunft selbst so wirklich gut zu wissen! – Triamus

0

Ich lief auch in diesem Verhalten. Die Lösung ist die Verwendung normalizePath():

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

EDIT

Es stellt sich heraus, das nicht der fix war. Aber da dies in Google-Suchen viel auftaucht, habe ich schließlich herausgefunden, dass der Block, in dem Sie die Knitr-Parameter einrichten, nicht Ihren Code ausführen darf.

Sie sollten Ihre Skripte aus anderen Chunks beziehen. Dies wird das Problem beheben.

Dies ist dokumentiert here.

Verwandte Themen