Реактивная функция не работает - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь получить значения переключателей в server.R и после получения значения хочу выполнить какой-то фильтр на основе выбранного значения переключателя.Код выглядит следующим образом:

ui.R

library(shiny)
library(shinydashboard)
library(dplyr)
library(plyr)
library(highcharter)

shinyUI(
  dashboardPage(skin = "black",
                dashboardHeader(title = img(src='BoA.png',height= 60,align = 
'middle')),
                dashboardSidebar(
                sidebarMenu(
                id ="tabs",
                menuItem("Block Trade",icon = icon("bank"),tabName = "blocktrade")
              )
            ),
            dashboardBody(
              tabItems(
                tabItem(
                  "blocktrade",tabBox(
                    id="tabset1",height = "475px",width = "1050px",
                    tabPanel("VOLUME BY CLIENT/STATUS",
                             column(width = 12,
                                    fluidRow(          
                                      box(width = 8,highchartOutput("block_trade_hcontainer1",height = "400px",width = "400px")),
                                      box(width = 4,title = "Status",radioButtons("status",label = NULL ,choices = c("Amended"="Amended","New"="New"),selected = "Amended",inline = TRUE))
                                    )
                             )
                    )

                  )
                )
              )
            )
          )
 )

server.R

library(shiny)
library(shinydashboard)
library(highcharter)
library(dplyr)
library(plyr)
library(xlsx)

block_trade<-read.xlsx('Blocktrade.xlsx',1)

shinyServer(function(input,output){
  nStatus<-reactive({input$status})
  block_trade<-block_trade[block_trade$Status == nStatus(),]
  block_trade_volume_by_client<-data.frame(table(block_trade$Associated.Client))

  output$block_trade_hcontainer1<-renderHighchart({
  highchart()%>%
  hc_chart(type="column")%>%
  hc_xAxis(categories=block_trade_volume_by_client$Var1)%>%
  hc_add_series(name="Quantity",data=block_trade_volume_by_client$Freq)%>%
  hc_exporting(enabled=TRUE)
  })
})

Итак, на стороне сервера я не могу получить значение радиокнопки для блока фильтраторговые данные.

1 Ответ

0 голосов
/ 21 мая 2018

Я немного адаптировал вашу реактивную функцию, так как она только слушала входной $ status, который уже является «реактивным» значением.Так что я перешел block_trade и block_trade_volume_by_client в реактив.Поэтому, когда вы изменяете input$status, данные фильтруются соответствующим образом.А в функции renderHighchart отфильтрованные данные вы вызываете с помощью nStatus <- block_trade_volume_by_client().

library(shiny)
library(shinydashboard)
library(dplyr)
library(plyr)
library(highcharter)
library(xlsx)


ui <- {shinyUI(
  dashboardPage(skin = "black",
                dashboardHeader(title = img(src='BoA.png',height= 60,align = 
                                              'middle')),
                dashboardSidebar(
                  sidebarMenu(
                    id ="tabs",
                    menuItem("Block Trade",icon = icon("bank"),tabName = "blocktrade")
                  )
                ),
                dashboardBody(
                  tabItems(
                    tabItem(
                      "blocktrade",tabBox(
                        id="tabset1",height = "475px",width = "1050px",
                        tabPanel("VOLUME BY CLIENT/STATUS",
                                 column(width = 12,
                                        fluidRow(          
                                          box(width = 8,highchartOutput("block_trade_hcontainer1",height = "400px",width = "400px")),
                                          box(width = 4,title = "Status",radioButtons("status",label = NULL ,choices = c("Amended"="Amended","New"="New"),selected = "Amended",inline = TRUE))
                                        )
                                 )
                        )

                      )
                    )
                  )
                )
  )
)}


block_trade<-read.xlsx('Blocktrade.xlsx',1)


server <- shinyServer(function(input,output){
  nStatus<-reactive({
    req(input$status)
    block_trade<-block_trade[block_trade$Status == input$status,]
    block_trade_volume_by_client<-data.frame(table(block_trade$Associated.Client))
    block_trade_volume_by_client
    })

  output$block_trade_hcontainer1<-renderHighchart({
    req(input$status)
    block_trade_volume_by_client <- nStatus()

    highchart()%>%
      hc_chart(type="column")%>%
      hc_xAxis(categories=block_trade_volume_by_client$Var1)%>%
      hc_add_series(name="Quantity",data=block_trade_volume_by_client$Freq)%>%
      hc_exporting(enabled=TRUE)
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...