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 选择输入 - 捕获事件的主要内容,如果未能解决你的问题,请参考以下文章