2015-09-30 7 views
5

Ich habe kürzlich begonnen, die Slidy-Präsentationsvorlage in Rmarkdown zu verwenden und zu sehen, wie Sie auf jeder Folie nach weiteren Inhalten scrollen können.Wie wird die Chunk-Ausgabe angezeigt, bevor der Code in der Rmarkdown-Präsentation (slidy) ausgegeben wird?

Eine Möglichkeit, die ich benutze, ist das Teilen von Plots mit meinen Schülern (siehe Beispielcode unten). Auf einer einzigen Folie kann ich das Diagramm zusammen mit dem genauen Code anzeigen, der zum Erstellen des Diagramms verwendet wurde, das durch Scrollen nach unten angezeigt werden kann.

--- 
title: Echo Code Chunks After Code Results 
subtitle: Thanks For Your Help 
author: Me 
date: "today" 
output: slidy_presentation 
runtime: shiny 
--- 

## Slide with Interactive Plot 

```{r, echo=TRUE, warning=FALSE, message=FALSE} 
shinyApp(options = list(width = "100%", height = "700px"), 
    ui = (fluidPage(
inputPanel(
    selectInput("n_breaks", label = h3("Number of bins:"), 
       choices = c(10, 20, 35, 50), selected = 20), 

    sliderInput("bw_adjust", label = h3("Bandwidth:"), 
       min = 0.2, max = 2, value = 1, step = 0.2)), 
    plotOutput("stuff", height = "650px") 

)), 

server = function(input,output,session) { 

    output$stuff = renderPlot({ 
    hist(faithful$eruptions, probability = TRUE, 
breaks = as.numeric(input$n_breaks), 
xlab = "Duration (minutes)", main = "Geyser eruption duration", 
col = "bisque", border = 1) 

    dens <- density(faithful$eruptions, adjust = input$bw_adjust, lwd = 2, col = "blue") 
    lines(dens, col = "blue") 
}) 
}) 
``` 

Das Problem, das ich habe, ist, dass das Standardverhalten ist den Code-Chunks vor dem Code Ergebnisse Echo, das die Rückseite ist, wie ich es will.

Ich kann das offensichtlich lösen, indem ich zwei Code-Chunks einfüge, wo die erste Chunk-Option echo=FALSE hat und die zweite echo=TRUE, fig.show='hide', aber dies erfordert, dass ich sicherstelle, dass beide Code-Chunks übereinstimmen. Wie kann ich diese Reihenfolge umkehren, damit die Diagramme angezeigt werden, bevor der Code wiedergegeben wird?

Wie immer, danke für die Hilfe.

Antwort

4

Sie sollten tun können, was Sie wollen, mit dem folgenden für den Körper Ihrer Präsentation.

## Slide with Interactive Plot 

```{r thecode, echo=FALSE, warning=FALSE, message=FALSE} 
shinyApp(options = list(width = "100%", height = "700px"), 
    ui = (fluidPage(inputPanel(
    selectInput("n_breaks", label = h3("Number of bins:"), 
       choices = c(10, 20, 35, 50), selected = 20), 
    sliderInput("bw_adjust", label = h3("Bandwidth:"), 
       min = 0.2, max = 2, value = 1, step = 0.2)), 
    plotOutput("stuff", height = "650px"))), 

server = function(input,output,session) { 
    output$stuff = renderPlot({ 
    hist(faithful$eruptions, probability = TRUE, 
     breaks = as.numeric(input$n_breaks), xlab = "Duration (minutes)", 
     main = "Geyser eruption duration", col = "bisque", border = 1) 
    dens <- density(faithful$eruptions, adjust = input$bw_adjust, 
        lwd = 2, col = "blue") 
    lines(dens, col = "blue")}) 
    }) 
``` 

```{r thecode, eval=FALSE} 
``` 

Das heißt:

  • Erstellen Sie zwei Code Brocken mit dem gleichen Namen (hier thecode).
  • Setzen Sie im ersten Codeblock echo = FALSE, damit der Code nicht ausgedruckt wird, aber ausgewertet wird.
  • Im zweiten Code-Chunk echo = TRUE setzen, aber den Chunk vollständig leer lassen (auch keine Leerzeilen zwischen den Zäunen).
+0

Fantastisch! Ich wusste nicht, dass die den Code-Chunks zugewiesenen Namen auf diese Weise verwendet werden könnten. Danke für Ihre Hilfe! –

Verwandte Themen