【问题标题】:Need help for the slider to work In Shiny App需要帮助滑块在 Shiny App 中工作
【发布时间】:2019-04-30 10:08:04
【问题描述】:

大家好,我已经创建了一个闪亮的小应用程序,我正在使用 FY Quarter 的滑块。但是当我尝试使用滑块时遇到错误。

我正在使用响应式来获取滑块更新,但我收到了错误消息。 警告:seq.default 中的错误:'from' 必须是有限数

数据部分

Quarter <- c("Fy17Q1","Fy17Q1","Fy17Q1","Fy17Q2","Fy17Q2","Fy17Q2","Fy17Q3","Fy17Q3","Fy17Q3","Fy17Q4","Fy17Q4","Fy17Q4","Fy18Q1","Fy18Q1","Fy18Q1","Fy18Q2","Fy18Q2","Fy18Q2","Fy18Q3","Fy18Q3","Fy18Q3","Fy18Q4","Fy18Q4","Fy18Q4","Fy19Q1","Fy19Q1","Fy19Q1")
QuarterInNum <- c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9)
RiskTierDesc <- c("Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal")
Freq <- c(447,52,1161,470,87,1277,556,69,1284,471,61,1195,481,46,1247,519,46,1641,598,61,1591,556,56,1451,478,41,1617)
FreqPercent <- c(27,3,70,26,5,70,29,4,67,27,4,69,27,3,70,24,2,74,27,3,71,27,3,70,22,2,76)

Data <- data.frame(Quarter,QuarterInNum,RiskTierDesc,Freq,FreqPercent)

界面部分


library(shiny)
require(shinydashboard)
library(dplyr)
library(shinyWidgets)


ui <- dashboardPage(
  dashboardHeader(title = "Basic Dashboard"),

  dashboardSidebar(
    sidebarMenu( 
    sliderTextInput("Quarter","Select Quarter:",
                    choices =  c("FY17Q1","FY17Q2","FY17Q3","FY17Q4","FY18Q1","FY18Q2"),
                    selected =  c("FY17Q2","FY18Q1")))),

  dashboardBody(
    fluidRow(
      tableOutput('table')

    )))

服务器部分

server <- function(input, output) {


  dataInput <- reactive({
    #dataframe <- GroupFreq
    qfrom <- Data$QuarterInNum[match(input$Quarter[1], Data$Quarter)]
    qto <- Data$QuarterInNum[match(input$Quarter[2], Data$Quarter)]
    test <- Data[Data$QuarterInNum %in% seq(from=qfrom,to=qto),]
    #print(test)
    test()
  })

  output$table <- renderTable(dataInput())
  #output$table <- renderTable(Data) # to test if i am getting the table 

}


runApp(shinyApp(ui, server),launch.browser = TRUE)

我的预期结果是获得我在滑块中选择的季度的表格。

如果需要任何其他详细信息,请告诉我。谢谢

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    我发现了几件事:

    1. 您的数据框有“Fy...”格式的季度,而您的范围选择器有“FY...”格式的季度。

    2. 您的代码正在将四分之一字段的数字因子水平与范围选择器中的文本进行比较。

    这两个问题结合在一起会导致您的问题。更新代码:

    library(shiny)
    require(shinydashboard)
    library(dplyr)
    library(shinyWidgets)
    
    Quarter <- c("Fy17Q1","Fy17Q1","Fy17Q1","Fy17Q2","Fy17Q2","Fy17Q2","Fy17Q3","Fy17Q3","Fy17Q3","Fy17Q4","Fy17Q4","Fy17Q4","Fy18Q1","Fy18Q1","Fy18Q1","Fy18Q2","Fy18Q2","Fy18Q2","Fy18Q3","Fy18Q3","Fy18Q3","Fy18Q4","Fy18Q4","Fy18Q4","Fy19Q1","Fy19Q1","Fy19Q1")
    QuarterInNum <- c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9)
    RiskTierDesc <- c("Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal","Above Normal","High","Normal")
    Freq <- c(447,52,1161,470,87,1277,556,69,1284,471,61,1195,481,46,1247,519,46,1641,598,61,1591,556,56,1451,478,41,1617)
    FreqPercent <- c(27,3,70,26,5,70,29,4,67,27,4,69,27,3,70,24,2,74,27,3,71,27,3,70,22,2,76)
    
    Data <- data.frame(Quarter,QuarterInNum,RiskTierDesc,Freq,FreqPercent)
    
    
    ui <- dashboardPage(
      dashboardHeader(title = "Basic Dashboard"),
    
      dashboardSidebar(
        sidebarMenu( 
          sliderTextInput("Quarter","Select Quarter:",
                          choices =   c("Fy17Q1","Fy17Q2","Fy17Q3","Fy17Q4","Fy18Q1","Fy18Q2"),
                          selected =  c("Fy17Q2","Fy18Q1")))),
    
      dashboardBody(
        fluidRow(
          tableOutput('table')
    
        )))
    
    server <- function(input, output) {
    
    
      dataInput <- reactive({
        #dataframe <- GroupFreq
        qfrom <- Data$QuarterInNum[match(input$Quarter[1], as.character(Data$Quarter))]
        qto <- Data$QuarterInNum[match(input$Quarter[2], as.character(Data$Quarter))]
        test <- Data[Data$QuarterInNum %in% seq(from=qfrom,to=qto),]
        print(test)
        #test()
      })
    
      output$table <- renderTable(dataInput())
      #output$table <- renderTable(Data) # to test if i am getting the table 
    
    }
    
    runApp(shinyApp(ui, server),launch.browser = TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 2015-02-11
      • 2011-02-25
      • 2021-02-02
      • 2020-12-16
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多