2017-07-28 1 views
0

Regardons ce code pour un rapport dynamique, il est essentiellement la bande de modèle par défaut au minimum:En RMarkdown et brillant, comment emballer InputPanel et renderPlot dans un unique appel

--- 
output: html_document 
runtime: shiny 
--- 

```{r} 
inputPanel(selectInput("n_breaks", label = "Number of bins:",choices = c(10, 20, 35, 50), selected = 20)) 
renderPlot({hist(faithful$eruptions, probability = TRUE, breaks = as.numeric(input$n_breaks))}) 
``` 

Je voudrais définir une fonction f1 afin que je puisse exécuter ce lieu et avoir exactement la même sortie:

--- 
output: html_document 
runtime: shiny 
--- 

```{r} 
f1() 
``` 

est-ce possible?

Répondre

0

La solution était dans l'option de bloc code.

Voici une façon de le faire fonctionner pour mon exemple (bien que dans la pratique, il sera plus facile d'alimenter une chaîne directement):

--- 
output: html_document 
runtime: shiny 
--- 
```{r} 
f1 <- function(){ 
    inputPanel(selectInput("n_breaks", label = "Number of bins:",choices = c(10, 20, 35, 50), selected = 20)) 
    renderPlot({hist(faithful$eruptions, probability = TRUE, breaks = as.numeric(input$n_breaks))}) 
} 
``` 

```{r,code = as.character(body(f1))[-1]} 
```