Нужна помощь для работы слайдера In Shiny App - PullRequest
0 голосов
/ 30 апреля 2019

Привет, все! Я создал небольшое блестящее приложение и использую ползунок для 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

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)

Мой ожидаемый результат - получить таблицу для квартала, который я выбираю на слайдере.

Пожалуйста, дайте мне знать, если требуются какие-либо другие детали.Спасибо

1 Ответ

0 голосов
/ 30 апреля 2019

Я заметил пару вещей:

  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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...