直到最近,我一直在服务器对象的每个输出中重复相同的被动语句。
server <- function(input, output) {
output$MeanResult <- renderText({
if(input$Posi != "All"){
ProjDt <- ProjDt[ProjDt$Pos == input$Posi,]
}
ProjDt <- filter(ProjDt, TimeToKO < input$TimeKO)
mean(ProjDt[[input$Metric]])
})
output$hist <- renderPlot({
if(input$Posi != "All"){
ProjDt <- ProjDt[ProjDt$Pos == input$Posi,]
}
ProjDt <- filter(ProjDt, TimeToKO < input$TimeKO)
hist(ProjDt[[input$Metric]])
})
}
这似乎产生了预期的结果,但我想避免重复每个输出的反应部分。
因此,我试图模块化&#39;在将代码传递给输出语句之前代码的反应部分:server <- function(input, output) {
ProjDt <- reactive({
if(input$Posi != "All"){
ProjDt <- ProjDt[ProjDt$Pos == input$Posi,]
}
ProjDt <- filter(ProjDt, TimeToKO < input$TimeKO)
ProjDt <- ProjDt[[input$Metric]]
})
output$MeanResult <- renderText({
mean(ProjDt())
})
output$hist <- renderPlot({
hist(ProjDt())
})
}
我已经玩了很多但是我无法获得理想的结果。我得到的主要错误是'object of type 'closure' is not subsettable'
。
我对Shiny相对较新,所以我觉得我错过了一些非常基本的东西。
我需要做什么才能使模块化的无功输出工作?