首页 > 解决方案 > 有没有办法将数组用作 Shiny 元素的 inputId?

问题描述

我需要可变数量的文本框输入。目前我在循环中创建输入,

textInput(paste0("text", i))

然后我可以使用

input$text1, input$text2, input$text3, ...

但我不能在循环中使用这些显式表达式。我尝试使用 ensym 和 get(eval(...)) 但它不起作用。
有没有办法在数组中定义每个 textInput 的 inputIds,例如 textInput("text[i]"))?

这是一个简化的示例:

应用程序.R

library(shiny)

ui <- fluidPage(
  textInput(paste0("textin1"), label = NULL, value = 1),
  textInput(paste0("textin2"), label = NULL, value = 2),
  textInput(paste0("textin3"), label = NULL, value = 3),
  verbatimTextOutput("textout1"),
  verbatimTextOutput("textout2"),
  verbatimTextOutput("textout3")
)
server <- function(input, output, session) {
  output$textout1 <- renderText({input$textin1})
  output$textout2 <- renderText({input$textin2})
  output$textout3 <- renderText({input$textin3})
}

shinyApp(ui, server)

有没有办法通过数组分配输入和输出,即 textin[i] 而不是 textin1, textin2, ...

标签: rshiny

解决方案


推荐阅读