如何使用testInput创建一个列表,并将列表名称分配为R shiny中相同的textInput?

vxqlmq5t  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(84)

我想通过textInput创建一个基于用户输入的列表,并使用相同的textInput分配列表名称。
例如,如果用户的输入是a,则列表名称是a,元素是paste0(a, Sys.Data())
下面是我的例子。我可以创建列表,但是我不知道如何分配列表名称。

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) {
      my_list(append(my_list(), list(paste0(new_item, Sys.Date()))))
    }
  })
  
  output$my_output <- renderPrint({
    my_list()
  })
}

shinyApp(ui = ui, server = server)
jdzmm42g

jdzmm42g1#

你可以像这样使用setNames

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) {
      my_list(append(my_list(), setNames(list(paste0(new_item, Sys.Date())), new_item)))
    }
  })

  output$my_output <- renderPrint({
    my_list()
  })
}

shinyApp(ui = ui, server = server)

相关问题