我写了下面这个闪亮的应用程序,它就是这样工作的。这是一个简单的控件,可以从列表中选择一种材料(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((中的内容已经被"处理",也就是说被评估。