Изменение имен фильтра и его значений в соответствии со значениями, выбранными из другого фильтра - PullRequest
1 голос
/ 26 сентября 2019

У меня есть датафрейм df.Я выполнил половину кода, как показано ниже.С этим кодом я получаю 3 фильтра

. Теперь, когда я выбираю Тренд в Filter1, на графике А отображается график. С этим графиком, когда я изменяю значения в фильтре ниже (Тренд), графикменяюсь, это нормально для меня.

Что я хочу, так это то, что в Filter1, если выбран Trend, имя нижестоящего фильтра должно быть изменено на Trend, а также его значения должны быть изменены в соответствии с тем, что указано в пользовательском интерфейсе (что-то вроде ниже). Так что, если я выберу Корреляцию в FIlter1, имя фильтра, указанного ниже, должно измениться на Корреляцию и ее значения.Другими словами, мне не нужен 3-й фильтр здесь.Также в корреляционном фильтре есть комбинация всех возможных факторов.Поэтому, когда я выбираю C & D, график должен показывать связь между A и B и так далее.

Надеюсь, мой вопрос ясен

enter image description here

Ниже приведен исходный код

 ---
 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)
})
```


```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...