R Shiny Dynamic 选择输入 - 捕获事件

Posted

技术标签:

【中文标题】R Shiny Dynamic 选择输入 - 捕获事件【英文标题】:R Shiny Dynamic select input - capture event 【发布时间】:2019-06-29 18:43:04 【问题描述】:

我正在使用 renderUI 在我的 UI 上创建动态文本框和下拉菜单。我想捕捉文本框/下拉菜单中的变化事件并修改数据框

下面是创建用户界面的代码

server <- function(input, output, session)

  output$fileContent <- renderTable(
    inFile <- input$csvFile
    csvContent <- read.csv(inFile$datapath)
    output$summary <- renderPrint(str(csvContent))
    allColumns <- names(csvContent)
    types <- sapply(csvContent, class)
    w <- ""
    for (i in 1:length(allColumns))
      w <- paste(w, selectInput(paste("inp",allColumns[i], sep = "_"), allColumns[i],choices = c("factor","integer","logical","character", "Date"), selected = types[i], width = 200))
    
    output$columns <- renderUI( html(w) )
    return (head(csvContent))
  )

期望的输出 -

上面的代码在 UI 上根据需要呈现文本框,但不会捕获文本框中值更改的事件。由于控件是动态的,我不能为静态捕获事件编写代码,因为控件名称将动态生成

【问题讨论】:

如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。你想要的行为到底是什么?尝试制作一个不依赖于用户上传文件的示例,以便我们更轻松地提供帮助。 嗯,顺便说一句:你在renderTable() 中有renderUI(),...这是故意的吗?关于您的问题:您可以做的是保存动态生成的名称。在reactiveValues() 中输入paste("inp",allColumns[i], sep = "_"),....并从那里获取名称,...如果您需要更具体的帮助,您可能应该遵循 MrFlick 的建议,... 感谢您的回复。如何添加动态控件 reactiveValues? 【参考方案1】:

在https://gist.github.com/mine-cetinkaya-rundel/0fe2a9830f7151e72053239e73350592得到答案

它的示例应用程序可以很好地与动态 UI 配合使用

【讨论】:

以上是关于R Shiny Dynamic 选择输入 - 捕获事件的主要内容,如果未能解决你的问题,请参考以下文章

通过 R Shiny 中的先前输入限制输入的选项

R Shiny:修改选择后保留/保留反应输入的值

R Shiny pickerInput 选择所有文本

Selectizeinput 输入互斥 R Shiny

在我选择并删除一个条目之前,R Shiny 中的 selectizeInput() 不允许输入

根据 R Shiny 中的其他选择动态更新两个 selectInput 框