R Фильтр Shinydashboard не работает должным образом с несколькими сортировками

avatar
Nicholas Darden
1 июля 2021 в 17:16
51
0
0

Ниже приведен код, над которым я работал, целью которого является сортировка и сравнение данных. Однако, когда я пытаюсь добавить несколько факторов для сравнения, данные кажутся запутанными. Я ожидаю, что когда я запускаю свое приложение и начинаю выбирать несколько параметров PetalWidth, оно должно показывать мне больше данных, однако фильтр, похоже, не расширяется в зависимости от моего выбора. Что я делаю не так?

library(shinydashboard)
library(tidyverse)
library(plotly)
library(shiny)

#______________________________________________________________________________#
server <- function(input, output, session) { 
    df <- reactive({
        subset(iris, Petal.Width == input$Petalw)
    })
    
    # Extract list of Petal Lengths from selected data - to be used as a filter
    p.lengths <- reactive({
        unique(df()$Petal.Length)
    })
    
    # Filter based on Petal Length
    output$PetalL <- renderUI({
        selectInput("PetalLengthSelector", "PetalLength", as.list(p.lengths()))
    })
    
    # Subset this data based on the values selected by user
    df_1 <- reactive({
        foo <- subset(df(), Petal.Length == input$PetalLengthSelector)
        return(foo)
    })
    
    output$table <- DT::renderDataTable(
        DT::datatable(df_1(), options = list(searching = FALSE,pageLength = 25))
    )
    
    output$correlation_plot <- renderPlotly({
        plot1 <- plot_ly(data=df_1(),
                         x = ~Petal.Length,
                         y = ~Petal.Width,
                         type = 'scatter',
                         mode = 'markers'
        )
    })
    
}

#______________________________________________________________________________#
ui <- navbarPage(
    title = 'Select values in two columns based on two inputs respectively',
    
    fluidRow(
        column(width = 12,
               plotlyOutput('correlation_plot')
        )
    ),
    
    
    fluidRow(
        column(width = 3,
               selectInput("Petalw","PetalWidth", choices = unique(iris$Petal.Width),multiple = T),
               uiOutput("PetalL")
        ),
        column(9,
               tabPanel('Table', DT::dataTableOutput('table'))
        )
    )
)
shinyApp(ui, server)
Источник
YBS
1 июля 2021 в 17:30
1

Попробуйте Petal.Width %in% input$Petalw и тот же %in% в следующем селекторе.

Nicholas Darden
1 июля 2021 в 17:42
0

Вау, никогда раньше не слышал о %in%. Работает как шарм. Спасибо!!

Nicholas Darden
1 июля 2021 в 17:43
1

Для тех, кто сталкивается с этим marsja.se/how-to-use-in-in-r/#What_does_in_Mean_in_R

Ответы (0)