R flexdashboard и блестящий интерактивный сюжет - PullRequest
0 голосов
/ 19 декабря 2018

Я изучаю flexdashboard, но у меня нет четкой структуры.

Я создал примерный набор данных для построения на приборной панели графика в соответствии с выбранной переменной.

Кодследующее:

---
title: "flexdashboard: Shiny Embedding"
output: 
  flexdashboard::flex_dashboard:
    social: menu
    source_code: embed 
runtime: shiny
---

```{r global, include=FALSE}
library(tidyverse)
## generate a sample dataset
sample<-tbl_df(data.frame(c("City1","City2","City3","City1","City2","City3",
"City2","City3"),
c("A","B","C","D","D","A","A","B"),
c(12,14,15,12,12,14,8,10)))
colnames(sample)<-c("City","Country","Amount")
df<- 
reactive(sample%>%group_by(input$variable)%>%summarise(total=sum(Amount)))

```

Column {.sidebar}
-------------------------------------------
```{r}
selectInput(inputId="variable",label="group by",choices=c("City","Country"))
```

Column
------------------------------------------
### Plot

```{r}
renderPlot({barplot(total)})
```

Но я не могу получить то, что мне нужно.

Некоторые предложения или помощь?

1 Ответ

0 голосов
/ 19 декабря 2018

Простой вариант - создать функцию с параметрами вместо реактивного контекста:

makePlot <- function(groupBy) { #Instead of a reactive context
    data <- sample%>%group_by(groupBy)%>%summarise(total=sum(Amount))
    return(barplot(data[[groupBy]])) #Here we use a dynamic height using a variable name
}

, а затем вызвать ее из вашего renderPlot:

renderPlot(makePlot(input$variable))
...