library(shiny)
ui <- fluidPage(
titlePanel("BOILER MASTER DATA LIST"),
sidebarLayout(
sidebarPanel(
selectizeInput("Status", "Select a Status", choices = NULL)),
mainPanel(
tableOutput("BOILERDATA")),))
server <- function(input, output, session){(
updateSelectizeInput(session,"Status", choices = RawData$Status, server = TRUE)
output$BOILERDATA <- renderTable({statefilter <- subset(RawData, RawData$Status == input$Status, drop = TRUE)})}
shinyApp(ui = ui, server = server)
我试图在服务器部分添加输出显示没有。根据所选输入显示的结果。请帮助。
您需要在UI中添加一个额外的输出,例如textOutput
。renderTable
只处理表和类似表的结构。如果您想要在表的下面写入内容,那么您实际上必须添加一行文本。用Excel做过吗?然后您知道您还必须处理textoverflow、跨越单元格、可能还有边框等。它打破了你的表格数据和随机的非表格数据,在表格框架中的想法。
那么你需要给它分配一些输出。理想的nrow(statefilter)
,但你不能,因为它没有定义在你的renderTable
范围之外。我们不是在表中准备数据,然后以某种方式将其分配给其他作用域可以找到的变量,而是将任务分为两个不同的部分:1)准备(子集)数据,以及2)格式化数据以供表示。目前,你正在renderTable
中做这两件事。这本身是可以的,它只是使进一步建立更加困难。因此,要在renderTable
之外执行第1部分,您必须在响应上下文中执行,因为它使用响应变量作为输入(input$Status
)。
filtered <- reactive({
req(length(input$Status) == 0)
subset(RawData, RawData$Status == input$Status, drop = TRUE)
})
output$BOILERDATA <- renderTable( filtered() )
output$rows <- renderText( nrow(filtered() )
帮你自己一个忙,查查req
是做什么的。