Ich schreibe eine Erklärung eines Plots, wo ich im Grunde das Plot in einem ersten Chunk erstellen, dann diese Ausgabe beschreiben und eine Achse in einem zweiten Chunk hinzufügen werde.Splitten eines Plotaufrufs über mehrere Chunks
Es scheint jedoch, jeder Abschnitt erzwingt eine neue Zeichenumgebung, so erhalten wir einen Fehler beim Versuch, einen Chunk mit axis
allein zu führen. Beachten Sie:
---
output: html_document
---
```{r first}
plot(1:10, 1:10, xaxt = "n")
```
Look, no x axis!
```{r second}
axis(side = 1, at = 1:10)
```
Fehler in
axis(side = 1, at = 1:10)
:plot.new
wurde nicht genannt noch Anrufe:<Anonymous>
...withCallingHandlers
->withVisible
->eval
->eval
->axis
Ausführung gestoppt
Offensichtlich ist dies eine gültige Problemumgehung, die identische-Ausgabe hat:
---
output: html_document
---
```{r first}
plot(1:10, 1:10, xaxt = "n")
```
Look, no x axis!
```{r second, eval = FALSE}
axis(side = 1, at = 1:10)
```
```{r second_invisible, echo = FALSE}
plot(1:10, 1:10, xaxt = "n")
axis(side = 1, at = 1:10)
```
Aber das ist weniger als ideal (dupliziert Code, zweimal die Handlung zu bewerten ist, etc.)
This Frage verwandt ist - zum Beispiel könnten wir die second
Brocken und setzen echo = -1
auf der second_invisible
ausschließen Chunk (dies würde auch nicht in meiner Anwendung funktionieren, aber ich möchte die Dinge hier nicht übermäßig komplizieren)
Gibt es keine Option wie dev.hold
, die wir an den ersten Chunk senden können?
Es scheint, dass in dem ersten Codeblock, versuchen, die Achse zu einem bereits vorhandenen Plot hinzufügen Sie (nur eine Parzelle), wo in Im zweiten Block fügen Sie die Achse zu einem neuen duplizierten Plot hinzu (d. h Sie haben zwei Versionen der Handlung, eine ohne die Achsen und eine mit, was Sie wirklich wollen). Mit anderen Worten, Sie erwarten/hoffen, dass es im zweiten Chunk automatisch den Plot für Sie dupliziert (sie sind wirklich zwei getrennte Versionen des Plots). Die damit verbundene Frage scheint nicht zu versuchen, mehr als eine Handlung zu erstellen. – steveb
In Sweave/noweb-Syntax können Sie <> verwenden, um den Code aus dem ersten Chunk in einem späteren einzufügen, aber ich kenne keine Entsprechung in Markdown-Syntax. –
user2554330
@ user2554330 hmm, klingt etwas vielversprechend. Ich sehe immer noch das Problem, dass der Code zweimal ausgewertet werden muss. – MichaelChirico