У меня есть датафрейм df.Я выполнил половину кода, как показано ниже.С этим кодом я получаю 3 фильтра
. Теперь, когда я выбираю Тренд в Filter1, на графике А отображается график. С этим графиком, когда я изменяю значения в фильтре ниже (Тренд), графикменяюсь, это нормально для меня.
Что я хочу, так это то, что в Filter1, если выбран Trend, имя нижестоящего фильтра должно быть изменено на Trend, а также его значения должны быть изменены в соответствии с тем, что указано в пользовательском интерфейсе (что-то вроде ниже). Так что, если я выберу Корреляцию в FIlter1, имя фильтра, указанного ниже, должно измениться на Корреляцию и ее значения.Другими словами, мне не нужен 3-й фильтр здесь.Также в корреляционном фильтре есть комбинация всех возможных факторов.Поэтому, когда я выбираю C & D, график должен показывать связь между A и B и так далее.
Надеюсь, мой вопрос ясен
Ниже приведен исходный код
---
title: Current Conditions
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: scroll
runtime: shiny
source_code: embed
theme: cosmo
---
```{r global}
library(flexdashboard)
library(readxl)
library(tidyverse)
library(lubridate)
library(ggplot2)
library(reshape)
library(shiny)
library(plotly)
```
```{r}
df <- structure(list(A = c(1, 2, 3, 4, 5, 6, 7), B = c(3, 4, 5, 12,
23, 12, 13), C = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L), .Label = c("A",
"B", "C"), class = "factor"), D = structure(c(2L, 2L, 1L, 1L,
3L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor")), class = "data.frame", row.names = c(NA,
-7L))
df <- as.data.frame(df)
```
Summary
=================
Inputs {.sidebar}
-----------------------------------------------------------------------
```{r}
selectInput("c","Filter1",choices = c("","Trend","Correlation"))
selectInput("b","Filter2",choices = c("ALL",levels(factor(df$C))))
selectInput("d","Correlation",choices = c("",combn(names(df),2,paste,collapse="&")))
```
Column {data-width=350}
-----------------------------------------------------------------------
### Chart A
```{r}
plotOutput("p1")
output$p1 <- renderPlot({
if (input$c == "Trend"){
s_data <- df
}
if (input$c == "Trend" && input$b != "ALL") {
s_data <- s_data %>%
filter(C %in% input$b)
}
plot(s_data$A,s_data$B)
})
```
```