You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R Shiny中通过textInput创建同名列表并赋值?

解决R Shiny中创建命名列表的问题

你当前的代码只是把生成的字符串添加到列表里,但没给元素设置对应的名称。要实现用用户输入作为列表名,只需要在添加元素时给新的列表项指定名称即可,下面是修改后的完整代码:

library(shiny)

my_list <- reactiveVal(list())

ui <- fluidPage(
  textInput(inputId = "my_input", label = "Enter some text:"),
  actionButton(inputId = "add_button", label = "Add"),
  verbatimTextOutput(outputId = "my_output")
)

server <- function(input, output, session) {
  
  observeEvent(input$add_button, {
    new_item <- isolate(input$my_input)
    if (nchar(new_item) > 0) {
      # 动态生成以用户输入为名称的列表项
      new_list_entry <- list(!!new_item := paste0(new_item, Sys.Date()))
      # 追加到现有列表中
      my_list(append(my_list(), new_list_entry))
    }
  })
  
  output$my_output <- renderPrint({
    my_list()
  })
}

shinyApp(ui = ui, server = server)

关键修改说明

  • !!new_item := 是用非标准求值语法实现动态命名:!! 会把new_item的实际值取出来作为列表项的名称,:= 用来给该名称绑定对应的元素值。
  • 如果你不习惯非标准求值,也可以用setNames()函数替代,效果完全一样,修改这部分代码即可:
    new_list_entry <- setNames(list(paste0(new_item, Sys.Date())), new_item)
    

内容的提问来源于stack exchange,提问作者Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:35:06