r-当输入发生变化时要运行一次的用户定义函数



我对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]])
})

最新更新