R Shiny Dynamic select 输入 - 捕获事件
R Shiny Dynamic select input - capture event
我正在使用 renderUI 在我的 UI 上创建动态文本框和下拉菜单。我想捕获文本框/下拉列表中的更改事件并修改数据框
下面是创建 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 上根据需要呈现文本框,但不会捕获文本框中值更改时的事件。由于控件是动态的,我无法为静态捕获事件编写代码,因为控件名称会动态生成
在 https://gist.github.com/mine-cetinkaya-rundel/0fe2a9830f7151e72053239e73350592
上得到答案
它有示例应用程序,可以很好地处理动态 UI
我正在使用 renderUI 在我的 UI 上创建动态文本框和下拉菜单。我想捕获文本框/下拉列表中的更改事件并修改数据框
下面是创建 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 上根据需要呈现文本框,但不会捕获文本框中值更改时的事件。由于控件是动态的,我无法为静态捕获事件编写代码,因为控件名称会动态生成
在 https://gist.github.com/mine-cetinkaya-rundel/0fe2a9830f7151e72053239e73350592
上得到答案它有示例应用程序,可以很好地处理动态 UI