r语言 - 为什么我的表输出不会更新,除非我在 shiney 中创建反应值?



我写了下面这个闪亮的应用程序,它就是这样工作的。这是一个简单的控件,可以从列表中选择一种材料(tibble中的一列(,然后输出一个包含该tibble中所有列的表,但仅包含与所选材料对应的行。我不明白的是,为什么我必须在服务器函数上创建反应值(我将其命名为"materialInfo"(,以便更新dashboardBody上的tableOutput("materialInfo")

为什么简单的output$materialInfo <- Material %>% filter({Material == input$matId}) %>% renderTable()不起作用?有什么想法吗?tks


library(shiny)
library(shinydashboard)
library(feather)
library(tibble)
library(dplyr)
Material = as_tibble(read_feather("ListaMateriais.feather"))
# Define UI 
ui <- dashboardPage(

dashboardHeader(title="Setup"),

dashboardSidebar(
sidebarMenu(
menuItem("Material",tabName = "material",icon = icon("th"))
)
),

dashboardBody(
tabItems(
tabItem(tabName = "material",
selectInput("matId","Selecione o material",choices = Material$Material),
tableOutput("materialInfo")
)
)
)
)
server <- function(input, output) {
materialInfo <- reactive({Material %>%
filter(Material == input$matId)
})
output$materialInfo <- renderTable(materialInfo())
}

shinyApp(ui = ui, server = server)

output$materialInfo <- Material %>% filter({Material == input$matId}) %>% renderTable()没有响应的原因是,在将响应内容作为公共代码输入之前,输入$matId被调用了,get被管道传输到renderTable((中的内容已经被"处理",也就是说被评估。

最新更新