gpt4 book ai didi

R Shiny : Reuse lengthy computation for different output controls

转载 作者:行者123 更新时间:2023-12-04 10:49:50 25 4
gpt4 key购买 nike

我在 server.R 中有以下代码:

library(shiny)

source("helpers.R")

shinyServer(function(input, output) {
output$txtOutput1 <- renderText({
someLengthyComputation(input$txtInput)[1]
})
output$txtOutput2 <- renderText({
someLengthyComputation(input$txtInput)[2]
})
output$txtOutput3 <- renderText({
someLengthyComputation(input$txtInput)[3]
})
})

helpers.R 包含方法 someLengthyComputation它返回一个大小为 3 的向量。我怎样才能避免每次调用它 3 次 txtInput更改并且只在更新所有三个文本输出控件时调用一次?

最佳答案

您可以简单地放置 someLengthyComputation里面 reactive 表达:

shinyServer(function(input, output) {
someExpensiveValue <- reactive({
someLengthyComputation(input$txtInput)
})

output$txtOutput1 <- renderText({
someExpensiveValue()[1]
})

output$txtOutput2 <- renderText({
someExpensiveValue()[2]
})

output$txtOutput3 <- renderText({
someExpensiveValue()[3]
})
})
someLengthyComputation只有在 input$txtInput 时才会触发更改,否则呈现第一个输出 someExpensiveValue将返回一个缓存值。

虽然执行策略略有不同,但也可以使用 reactiveValues 的组合。和 observe .

someLengthyComputation真的很贵,您应该考虑添加 action buttonsubmit button并且仅在单击时触发计算,尤其是当您使用 textInput 时.

关于R Shiny : Reuse lengthy computation for different output controls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31907384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com