我对R和Shiny仪表盘很陌生。我创建了一个用户定义的函数,根据我在Shiny Dashboard上通过selectizeInput选择的特定类别来运行百分比分析。该函数返回10个项目作为表和图之间的输出。我正试图找到一种方法,当输入发生变化时,只刷新函数一次,并调用这10项,而不是为列表中的每个输出运行函数10次。我试图在下面重新创建一个小例子:
用户定义函数
GetPercentileAnalysis(GroupName(
GetPercentileAnalysis=function(GroupName){
(...)
list(output1,output2,output3)
}
在闪亮中,我目前正在创建如下输出:
output$output1<-renderPlotly({
GroupName<-input$GroupNameInput
GetPercentileAnalysis(GroupName)[[1]]
})
output$output2<-renderPlotly({
GroupName<-input$GroupNameInput
GetPercentileAnalysis(GroupName)[[2]]
})
output$output3<-renderPlotly({
GroupName<-input$GroupNameInput
GetPercentileAnalysis(GroupName)[[3]]
})
函数将运行3次的问题。有没有一种方法可以定义函数并使其运行一次并推断输出?如果这听起来像是一个非常愚蠢的问题,我们深表歉意,但会提供任何帮助
您可以使用reactive
来计算数据:
my_reactive <- reactive({
GroupName<-input$GroupNameInput
GetPercentileAnalysis(GroupName)
})
然后在绘图中使用
output$output1<-renderPlotly(my_reactive()[[1]])
output$output2<-renderPlotly(my_reactive()[[2]])
output$output3<-renderPlotly(my_reactive()[[3]])
})