R语言 小问题:从用户输入构建名称列表

0pizxfdo  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(114)

闪亮的新手,在为一个小问题而挣扎。
目标:根据用户输入建立一个名称列表。每次用户输入一个名称并单击保存时,将该名称附加到名称的字符向量,并使用该向量的新内容更新输出。
问题:每次单击保存时,字符向量都被重新初始化为空向量,因此第一个名称消失,输入的新名称成为向量的唯一内容。

ui <- fluidPage(
  fluidRow(
    textInput("name", "Name:"),
    actionButton("btnSave", "Save")
  ),
  fluidRow(
    h5("Output:"),
    verbatimTextOutput("out")
  )
)

server <- function(input, output, session) {
  nameList <- as.character(NULL)
  
  observeEvent(input$btnSave, {
    
    newList <- append(nameList, isolate(input$name))

    nameList <- reactive(newList)
    output$out <- renderPrint(nameList())
  })
}
uqxowvwt

uqxowvwt1#

library(shiny)
ui <- fluidPage(
  fluidRow(
    textInput("name", "Name:"),
    actionButton("btnSave", "Save")
  ),
  fluidRow(
    h5("Output:"),
    verbatimTextOutput("out")
  )
)

server <- function(input, output, session) {
  
  nameList <- reactiveVal()
  
  observeEvent(input$btnSave, {
    nameList(append(nameList(), input$name))
  })
  
  output$out <- renderPrint(nameList())
  
}

shinyApp(ui = ui, server = server)
hl0ma9xz

hl0ma9xz2#

看起来你需要两样东西:
1.将newList重命名为nameList
1.在observeEvent中给予nameList指定一个全局赋值(<<-

ui <- fluidPage(
  fluidRow(
    textInput("name", "Name:"),
    actionButton("btnSave", "Save")
  ),
  fluidRow(
    h5("Output:"),
    verbatimTextOutput("out")
  )
)

server <- function(input, output, session) {
  nameList <- as.character(NULL)
  
  observeEvent(input$btnSave, {
    
    nameList <<- append(nameList, isolate(input$name))
    nameListReactive <- reactive(nameList)
    output$out <- renderPrint(nameListReactive())
  })
}

shiny::shinyApp(ui,server)

相关问题