Shiny:使 renderUI 对下拉列表做出反应,而不是对 SubmitButton 做出反应

2023-12-20

如何让 renderUI 对用户从下拉列表中选择不同的值做出反应,而无需单击我的提交按钮?

我有一个 wellPanel,其中包含 3 个内容:
1)我的下拉列表
2) 一组动态输入(由我的 renderUI 函数创建,取决于 #1 中的选择)
3)提交按钮

期望的行为:下拉选择的更改为用户提供了不同的输入小部件以供使用。当他们准备好获得所选输入的结果时,他们单击提交按钮,然后在主面板中获取结果。

问题:我的 renderUI 仅在单击提交按钮后对下拉选择做出反应。据我所知,我需要隔离某些内容或使用observeEvent,但我一直无法弄清楚。

简化示例:

rm(list = ls())
library(shiny)

ui  <- fluidPage(
  fluidRow(
column(4,wellPanel(
  selectInput("analysis", label = "Type of Analysis:", 
              c("Award Total" = "total", 
                "Award Average" = "average"),
              width = validateCssUnit("70%")),
  uiOutput("filter_box"),
  submitButton()
    )),
column(8, textOutput("sample_text"))
  )
)

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

  output$filter_box <- renderUI({
if(input$analysis == "total"){
  tagList(radioButtons(inputId = "input1", label = "Select One:",c("A", "B", "C"), selected = "A"))
} else {
  tagList(checkboxGroupInput(inputId = "input2", label = "Select all that apply:",c("1","2","3","4","5")),
          dateRangeInput(inputId = "input3", label = "Enter Date Range"))
}
})

output$sample_text <- renderText({
  if(input$analysis == "total"){
    input$input1
  } else if(input$analysis == "average") {
    c(input$input2, input$input3)
  }
 })
}

runApp(list(ui = ui, server = server))

您需要引入两个更改。

  1. 改变submitButton to an actionButton(参见@daattali 的评论)

  2. Isolate renderText,并使其对 actionButton 做出反应。

请参阅下面的代码。

rm(list = ls())
library(shiny)

ui  <- fluidPage(
  fluidRow(
    column(4,wellPanel(
      selectInput("analysis", label = "Type of Analysis:", 
                  c("Award Total" = "total", 
                    "Award Average" = "average"),
                  width = validateCssUnit("70%")),
      uiOutput("filter_box"),
      actionButton(inputId = 'button_1',label = 'Apply Changes')
    )),
    column(8, textOutput("sample_text"))
  )
)

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

  output$filter_box <- renderUI({
    if(input$analysis == "total"){
      tagList(radioButtons(inputId = "input1", label = "Select One:",c("A", "B", "C"), selected = "A"))
    } else {
      tagList(checkboxGroupInput(inputId = "input2", label = "Select all that apply:",c("1","2","3","4","5")),
              dateRangeInput(inputId = "input3", label = "Enter Date Range"))
    }
  })

  output$sample_text <- renderText({
    input$button_1
    isolate({
      if(input$analysis == "total"){
        input$input1
      } else if(input$analysis == "average") {
        c(input$input2, input$input3)
      }
    })

  })
}

runApp(list(ui = ui, server = server))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Shiny:使 renderUI 对下拉列表做出反应,而不是对 SubmitButton 做出反应 的相关文章

随机推荐

  • 如何从命令行停止/启动特定的 WebSphere 部署的 EAR?

    我正在将一个依赖项 jar 放入 WebSphere 应用程序服务器上的分解 EAR 中 我需要停止 启动 EAR 以使 WS 执行新代码 有没有办法从命令行执行此操作 尝试运行这样的东西 opt ibm websphere appserv
  • 用户注销时删除 HKEY_CURRENT_USER 值

    Windows 服务在下创建一个注册表值 用于 Excel 加载项 HKEY CURRENT USER每个登录用户的注册表项 通过调用ImpersonateLoggedOnUser http msdn microsoft com en us
  • JQuery 幻灯片切换超时

    我有简单的 html 页面
  • 位移位大型二进制文件?

    在 C 中对大量二进制数据进行位移位的最佳或推荐方法是什么 我有一个 200K 二进制文件 我想左移然后右移整个文件 如果您的操作系统可以支持它 请使用内存映射文件 然后做一点移位就会非常非常高效 请参阅此答案以获取更多信息 内存映射文件有
  • browserify external 与 except 之间有什么区别?

    我在用着browserify并试图让它跳过浪费时间包括或解析 jquery 和其他require less 文件我通过 CDN 加载 我应该使用bundle exclude jquery or bundle external jquery
  • Apple iOS 浏览器随机不会呈现动态加载的 HTML 对象

    我们遇到的问题仅在 iOS 浏览器 iOS 12 0 上明显 我们的 SPA 应用程序使用 HTML 对象标签通过 JavaScript 将小部件 HTML CSS JS 文件 加载到页面上 该问题是间歇性的 当页面加载时 某些小部件不会在
  • 在 AWS DynamoDB 上存储聊天日志?

    我正在考虑使用 AWS DynamoDB 构建一个聊天应用程序 该应用程序将支持一对一和群聊 我想为每个聊天创建一个表 其中每个发送的聊天文本行都有一条记录 DynamoDB 适合这种工作吗 我也在考虑合并两个表 但是 如果 假设 有 10
  • MongoDB 身份验证错误

    连接 Mongodb 时出现此错误 我不太确定这个错误是什么 使用 CompositeServerSelector Selectors ReadPreferenceServerSelector ReadPreference Mode Pri
  • 并排对齐 2 个 div

    我需要并排对齐 2 个 div 它们都位于没有设置高度的包装 div 内 我的问题是 当我分别使用 float left 和 float right 时 div 似乎不会 留在 包装器 div 内 我可以看出 因为包装器 div 与页面具有
  • 如何保持 RxJ 干燥

    DRY 不要重复自己 假设我在我的应用程序中经常使用以下代码 observable pipe tap value gt console log value map value gt value 5 more repeated stuff 假
  • Angular 2自定义验证器:检查输入值是否为整数?

    在 Angular2 项目中 我需要验证一些输入 如何轻松检查输入值是否为整数 我尝试使用Number control value 返回0对于空的字段 不好 or parseInt control value 10 不考虑空格 如果我有类似
  • Microsoft.TeamFoundation.VersionControl.Client.ItemNotMappedException 即使工作区存在并且具有映射

    使用 TFS 2015 update 2 在计算机中安装代理 代理创建其工作区 内部开发的一些自定义 MSBuild 任务已在将在代理上运行的生成定义中实现 这些任务针对 TFS 服务器执行一些操作 当构建定义排队等待新构建时 我得到的是
  • 将语言包嵌入到应用程序中

    我正在制作一个使用离线语音识别的应用程序 来自 Google API 的 SpeechRecognizer 它工作得很好 但我需要在使用该应用程序之前下载语言包 所以 这是我的问题 有没有办法嵌入语言包并直接从我的应用程序安装它 或者从Pl
  • 如何在Java小程序中打开模式对话框?

    我正在尝试在前面显示一个模式对话框Applet 我当前的解决方案像这样获取根框架 Frame getMyParent Container parent getParent while parent instanceof Frame pare
  • Logstash - Memorize 插件的使用

    尝试使用 记忆 插件 如下所示 if message matching event grok match gt message mymatch datetime memorize field gt datetime if message a
  • 如何使 gcc 或 ld 报告未定义的符号但不失败?

    如果你用 GCC 编译一个共享库并传递 z defs 标志 我认为它只是盲目地传递给 ld 那么你会得到一个很好的报告 说明哪些符号未定义 并且 ld 失败 没有 so 文件 被建造 另一方面 如果您不指定 z defs 或显式指定 z n
  • 两个列表之间的交集 F#

    我正在寻找一个函数 它可以获取两个列表之间的交集并创建一个新列表 我有这个函数 let intersect x y Set intersect Set ofList x Set ofList y 可以实现我想要的功能 但我不想使用 F 中的
  • C#中ArrayList的初始大小是多少?

    我想知道C 中ArrayList的初始大小是多少 0 见下文 16 我必须为此答案添加字符 因为最少 18 个字符 编辑 哎呀 最初的capacity是16 初始大小当然是0 因为它是空的 必须学会如何阅读 或者你必须学习如何提出你的问题
  • 离线时 start_url 不会响应 200:start_url 确实响应,但不是通过服务工作线程响应。灯塔审计问题

    我正在创建一个与 Service Worker 一起离线工作的 PWA 目前它工作正常 但 Lighthouse Audit 存在问题 当我运行 Lighthouse 时 在 PWA 部分我遇到这个问题 离线时 start url 不响应
  • Shiny:使 renderUI 对下拉列表做出反应,而不是对 SubmitButton 做出反应

    如何让 renderUI 对用户从下拉列表中选择不同的值做出反应 而无需单击我的提交按钮 我有一个 wellPanel 其中包含 3 个内容 1 我的下拉列表2 一组动态输入 由我的 renderUI 函数创建 取决于 1 中的选择 3 提