gpt4 book ai didi

r - Shiny:允许用户选择 react 性

转载 作者:行者123 更新时间:2023-12-02 05:17:26 29 4
gpt4 key购买 nike

我正在构建一个带有多个选项卡的应用程序,其中一些选项卡涉及过多的计算,而另一些选项卡的计算速度很快。一个允许用户在 react 性或手动更新之间进行选择的复选框,与“刷新”按钮结合使用,将是理想的选择。

下面的简单示例说明了我的目标。它几乎可以工作,除了在取消选中“自动刷新”复选框时进行最后一次刷新之外,如果打开计算密集型选项卡,这会很痛苦。有什么办法可以解决这个问题吗?

ui.r

library(shiny)
shinyUI(fluidPage(
titlePanel("Test"),
sidebarLayout(
sidebarPanel(
checkboxInput("autoRefresh", "Automatically refresh", TRUE),
actionButton("refresh", "Refresh!"),
radioButtons("choice", "Choice of value:",
c("10" = 10,
"20" = 20))
),

mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Add random decimals to value", textOutput("value"))
)
)
)
))

服务器.r

library(shiny)
shinyServer(function(input, output) {
output$value <- renderText({

input$refresh
if(input$autoRefresh == 1) {
input$choice
}
isolate({
output <- runif(1,0,1) + as.numeric(input$choice)
})
})
})

非常感谢!

最佳答案

在此解决方案中,我创建了两个观察器:一个用于观察刷新按钮何时被点击,第二个观察器用于何时更改选择。第一个总是更新输出。

第二个检查 input$autoRefresh 的状态,然后退出或更新 renderText

不幸的是,您必须将 runif 命令写入两次,这可能不利于更新代码(如果您执行两次操作,则更容易引入错误)。在实践中,如果您的实际应用程序中存在复杂/多行流程,您可能想要创建一个新函数,然后只需调用该函数即可。

  shinyServer(function(input, output) {
observe({
input$refresh
output$value<-renderText({
isolate(runif(1,0,1) + as.numeric(input$choice))
})
})
observe({
input$choice
output$value<-if(input$autoRefresh==0) return() else {
renderText({isolate(runif(1,0,1) + as.numeric(input$choice))})
}
})
})

关于r - Shiny:允许用户选择 react 性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27949797/

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