gpt4 book ai didi

使用操作按钮刷新主面板屏幕

转载 作者:行者123 更新时间:2023-12-03 09:09:45 29 4
gpt4 key购买 nike

我正在构建一个 Shiny 的应用程序,我想刷新主面板屏幕。这是示例代码。我有一个提交按钮来显示数据,我有一个刷新按钮来清除屏幕。我不太确定如何在 R 和 Shiny 中编写重新刷新按钮的代码,因为我对此很陌生。感谢您的关注

library(DT)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("amountTable", "Amount Tables", 1:10),
actionButton("submit1" ,"Submit", icon("refresh"),
class = "btn btn-primary"),

actionButton("refresh1" ,"Refresh", icon("refresh"),
class = "btn btn-primary")

),
mainPanel(
# UI output
uiOutput("dt")
)
)
)

server <- function(input, output, session) {
observeEvent(input$submit1, {
lapply(1:input$amountTable, function(amtTable) {
output[[paste0('T', amtTable)]] <- DT::renderDataTable({
iris[1:amtTable, ]
})
})
})

output$dt <- renderUI({
tagList(lapply(1:10, function(i) {
dataTableOutput(paste0('T', i))
}))
})

}

shinyApp(ui, server)

最佳答案

您可以添加从 renderUI() 不返回任何内容的可能性如果使用刷新按钮。由于重置操作按钮并不那么简单,因此您必须使用 react 变量的解决方法。

if(global$refresh) return()

您可以使用刷新和提交按钮控制此 react 变量例如。 if(input$refresh1) isolate(global$refresh <- TRUE)您将其包装在单独的观察函数中。完整代码如下:

library(DT)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("amountTable", "Amount Tables", 1:10),
actionButton("submit1" ,"Submit", icon("refresh"),
class = "btn btn-primary"),

actionButton("refresh1" ,"Refresh", icon("refresh"),
class = "btn btn-primary")

),
mainPanel(
# UI output
uiOutput("dt")
)
)
)

server <- function(input, output, session) {

global <- reactiveValues(refresh = FALSE)

observe({
if(input$refresh1) isolate(global$refresh <- TRUE)
})

observe({
if(input$submit1) isolate(global$refresh <- FALSE)
})

observeEvent(input$submit1, {
lapply(1:input$amountTable, function(amtTable) {
output[[paste0('T', amtTable)]] <- DT::renderDataTable({
iris[1:amtTable, ]
})
})
})

output$dt <- renderUI({
if(global$refresh) return()
tagList(lapply(1:10, function(i) {
dataTableOutput(paste0('T', i))
}))
})

}

shinyApp(ui, server)

关于使用操作按钮刷新主面板屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43521202/

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