首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每次添加多个文本输入在闪亮的R中

每次添加多个文本输入在闪亮的R中
EN

Stack Overflow用户
提问于 2020-10-14 19:13:23
回答 1查看 93关注 0票数 1

我正在开发下面的Shinny应用程序,但我经历了如下困难:

当我在文本框中添加两个名称,如Magnolia_grandiflora,和Magnolia_ovata,时,我希望应用程序按如下方式打印这些输入名称:

选定的外部组: Magnolia_grandiflora Magnolia_ovata

但是,该应用程序只打印最后一个输入名,并删除第一个输入名。我希望应用程序总是打印新添加的名字。

此外,如果我想在我的应用程序中使用字符串(向量),如何访问所有这些输入名称的字符串(向量)?例如,我需要所有输入名称的向量作为另一个函数的参数。

非常感谢!

多明戈斯

代码语言:javascript
复制
ui <- fluidPage(  
    sidebarPanel(
        textInput("outgroups", "Select outgroup taxa", ""),
        actionButton("addoutgroup", "Add"),
      
      br(),
      br(), 
     
    mainPanel(
      htmlOutput("text")
    )
  )
)


server <- function(input, output,session) {
  
  observeEvent(input$addoutgroup, {
    n <- isolate(input$addoutgroup)
    if (n == 0) return()
    # create n-th pair of text input and output
    output[[paste0("ui", n)]] <- renderUI(
      list(textInput(paste0("textin", n), isolate(input$outgroups)),
           textOutput(paste0("textout", n))))
    updateTextInput(session,"outgroups", value="")
  })
  
  output$text <- renderUI({
    str1 <- paste("Number of selected outgroups:", input$addoutgroup)
    str2 <- paste("Outgroups selected:", isolate(input$outgroups))
    HTML(paste(str1, str2, sep = '<br/>'))
  })

}

shinyApp(ui, server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-15 12:27:51

这是一个你可以尝试的工作演示。

我会考虑使用reactiveValues来存储您输入的物种名称。在这种情况下,可以让rv$outgroup成为存储名称的向量。

输入新名称时,可以将c() (当前存储的rv$outgroup )与新名称组合。

然后,您可以以rv$outgroup的形式访问向量中的所有名称。

还请注意,我将mainPanel迁移到ui中的sidebarPanel之外。

代码语言:javascript
复制
library(shiny)

ui <- fluidPage(  
  sidebarPanel(
    textInput("outgroups", "Select outgroup taxa", ""),
    actionButton("addoutgroup", "Add"),
    br(),
    br()
  ), 
  mainPanel(
    htmlOutput("text")
  )
)


server <- function(input, output, session) {
  
  rv <- reactiveValues(outgroup = NULL)
  
  observeEvent(input$addoutgroup, {
    rv$outgroup <- c(rv$outgroup, input$outgroups)
    updateTextInput(session, "outgroups", value="")
  })
  
  output$text <- renderUI({
    str1 <- paste("Number of selected outgroups:", length(rv$outgroup))
    str2 <- paste("Outgroups selected:", paste(rv$outgroup, collapse = " "))
    HTML(paste(str1, str2, sep = '<br/>'))
  })
  
}

shinyApp(ui, server)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64360072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档