小编Qui*_*tem的帖子

如何制作一个闪亮的重置按钮来重置输入值然后更新数据?

我有一个应用程序,背后有大量数据,以及一套过滤器,用户可以应用这些过滤器对数据进行切片和切块并获得一系列输出。

由于数据集的大小,每次选择过滤器时,R 处理新过滤的数据时都会出现可以理解的延迟。因此,我实现了一个“更新模型”按钮,该按钮立即应用所有更改(而不是在选择过滤器时单独应用,因为所有滞后都会累加)。

我还有一个重置按钮,可以一次性完全重置所有过滤器。理想情况下,此按钮的行为是首先将所有输入值更新为其默认值,然后更新数据,以便使用默认值更新所有输出(即相当于手动选择默认值并更新数据)。然后按“更新”按钮)。两个按钮都会增加观察到的无功值并触发数据更新,唯一的区别是按下重置按钮时,首先重置输入值(理论上),然后增加观察到的无功值。

然而,当按下重置按钮时,值会重置,但无功输出不会更新。然后必须按下更新按钮(或再次按下重置按钮)才能更新输出。似乎发生的情况是在触发数据更新后重置值,因此新重置的值不会被传递。

我尝试尝试使用observeEvent函数中的优先级值,并将UI移动到服务器内的renderUI函数。我还使用bindEvent 来尝试确保重置后发生数据更新。

编辑:我无法使用jpdugo17session$reload()明智建议的,因为该应用程序有多个页面,我只想重置当前页面上的过滤器。

原始应用程序不实用,无法共享,但我使用具有相同逻辑(或缺乏逻辑!)的默认 Shiny 编写了问题的稻草人脚本,尽管它缺乏像真实应用程序那样具有多个页面的导航栏结构:

应用程序R

library(shiny)

ui <- fluidPage(
    titlePanel("Old Faithful Geyser Data"),
    sidebarLayout(
        sidebarPanel(
            sliderInput("bins",
                        "Number of bins:",
                        min = 1,
                        max = 50,
                        value = 30),
            actionButton("reset","RESET"),
            actionButton("update","UPDATE")
        ),
        mainPanel(
           plotOutput("distPlot")
        )
    )
)

server <- function(input, output,session) {
# Create values to use control the reset/update function
dat <- reactiveValues(bins=30,push_update=0)

# When reset button is pressed, reset the slider value and send a 'push update' signal
observeEvent(input$reset,{ …
Run Code Online (Sandbox Code Playgroud)

r shiny

6
推荐指数
1
解决办法
1457
查看次数

标签 统计

r ×1

shiny ×1