Уникальные значения для диапазона ползунка R Блестящий

avatar
JNN
8 августа 2021 в 17:29
107
1
0

Я пытаюсь выбрать только уникальные значения для моего ползунка диапазона в моем приложении Shiny. Я могу сделать это с помощью SliderTextInput, но я изо всех сил пытаюсь найти способ сделать это для ползунка диапазона. Пожалуйста, смотрите код ниже. Есть предложения?

#Example dataframe:

    df<- data.frame("ID" = c("001","001","001"), "date" = c("2020-07-01 01:00:00","2020-07-01 03:00:00","2020-07-01 06:00:00"))
    
    library(shiny)
    library(move)
    library(amt) 
    library(tibble)
    library(dplyr)
    library(htmltools)
    library(dygraphs)
    library(ggplot2)
    library(plotly)
    library(shinythemes)
    library(shinydashboard)
    library(datetime)
    library(shinyTime)
shinyServer(function(input, output, session) {
    
    observeEvent(input$selectVariable, {
        min<- min(as.POSIXct(df$date))
        max<- max(as.POSIXct(df$date))
        
        
        updateSliderTextInput(session, "month", choices = sort(unique(df$date)), selected = sort(unique(df$date)))

        updateSliderInput(session, "falltime", min = min, max = max, value =sort(unique(as.POSIXct(df$date))), timezone = "MST")
    })
})
    
    shinyUI(navbarPage(
        tabPanel("Analysis",
                 sidebarLayout(
                     sidebarPanel(width = 5,
                                  selectInput("selectVariable", "Select an ID:",
                                  choices =  unique(df$ID)),
                                  sliderTextInput("month",
                                                  "Date Range Correct:",
                                                  choices =  sort(unique(df$date))), #This slider works with the expected behavior but I need it to be a range slider
                                  sliderInput('falltime',"Slider Incorrect Date Range:", min = as.POSIXct("2020-01-01 00:00:00", tz = "MST"), max = as.POSIXct("2020-02-02 00:00:00", tz = "MST"),
                                              value = c(as.POSIXct("2020-01-01 00:00:00", tz = "MST"),as.POSIXct("2020-02-01 00:00:00", tz = "MST"))#, step =
                                  )), #Can't figure out how to make this slider select only unique values
                     mainPanel(h2("Uploaded Data")))
                 )
    
        ) 
    )
        
Источник
JNN
9 августа 2021 в 19:28
0

Хорошо, теперь должно работать

Ответы (1)

avatar
Ronak Shah
10 августа 2021 в 00:42
1

Для этого также можно использовать sliderTextInput. У него есть аргумент choices, который может принимать все уникальные значения, которые вы хотите отобразить, и аргумент selected, который покажет первый диапазон, выбранный по умолчанию.

library(shiny)
library(shinyWidgets)

df<- data.frame("ID" = c("001","001","001"), "date" = as.POSIXct(c("2020-07-01 01:00:00","2020-07-01 03:00:00","2020-07-01 06:00:00")))
df

server <- function(input, output, session) {
}

ui <- navbarPage(
  tabPanel("Analysis",
           sidebarLayout(
             sidebarPanel(width = 5,
                          selectInput("selectVariable", "Select an ID:",
                                      choices =  unique(df$ID)),
                          sliderTextInput("month",
                                          "Date Range Correct:",
                                          choices =  sort(unique(df$date))), 
                          sliderTextInput('falltime',"Slider Incorrect Date Range:", 
                                      choices =  unique(df$date), selected = range(df$date)
                          
                          )), 
             mainPanel(h2("Uploaded Data")))
  )
  
) 
shinyApp(ui, server)
JNN
10 августа 2021 в 18:16
0

Это было намного проще, чем я думал. Спасибо!