首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示来自另一个uiOutput的输入值的标签。

显示来自另一个uiOutput的输入值的标签。
EN

Stack Overflow用户
提问于 2021-05-17 14:41:17
回答 1查看 466关注 0票数 0

标题可能非常混乱,但我将尝试详细解释我的问题。我使用“掌握闪亮”一书第10节“动态UI”作为指导。R中使用的库是

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

我有一个标签为numericInput的Number of modalities/ subspecialties required

我有一个名为uiOutput的modality作为响应,如果来自numericInput的输入发生变化,它可以有更多的模式。请看下面的图片,如果数字变为2,将有2个模式框,而不是1个。

上面的代码如下所示

代码语言:javascript
复制
# UI
numericInput("No_modalities", label = "Number of modalities/
                              subspecialties required",
                              value = 1, min = 1, max = 100, step = 1)
uiOutput("modality")

# Server
modality_names <- reactive(paste0("Modality ", seq_len(input$No_modalities)))

output$modality <- renderUI({
    map(modality_names(), ~ textInput(.x, label = paste(.x," Name"),
                                         value = isolate(input[[.x]])))
  })

现在,我希望另一个uiOutput将标签作为Modality名称中的输入。我就是这样处理这个问题的。我创建了另一个名为uiOutput的ui_modality_minutes,但是对于标签,我想使用来自modality_names()输入的标签。请看下面的图片,以更好地理解我的目标。我希望input1 model 1是第一个标签,input2 model 2是第二个标签,但是我的代码将模型1和模型2一起添加,而不是单独添加。

代码语言:javascript
复制
# UI
uiOutput("ui_modality_minutes")

# Server
modality_minutes <- reactive(paste0("Modality minutes ",
                                      seq_len(input$No_modalities)))

output$ui_modality_minutes <- renderUI({
    map(modality_minutes(), ~ numericInput(.x, 
                          label = map(modality_names(),~input[[.x]]),
                          value = isolate(input[[.x]])))
  })

可复制代码如下所示,

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

ui <- fluidPage(
  fluidRow(
  numericInput("No_modalities", label = "Number of modalities/
                              subspecialties required",
               value = 1, min = 1, max = 100, step = 1)),
  fluidRow(
    uiOutput("modality")
  ),
  fluidRow(
    uiOutput("ui_modality_minutes")
  )
)

server <- function(input, output, session) {
  modality_names <- reactive(paste0("Modality ", seq_len(input$No_modalities)))
  modality_minutes <- reactive(paste0("Modality minutes ",
                                      seq_len(input$No_modalities)))
  
  output$modality <- renderUI({
    map(modality_names(), ~ textInput(.x, label = paste(.x," Name"),
                                      value = isolate(input[[.x]])))
  })
  output$ui_modality_minutes <- renderUI({
    map(modality_minutes(), ~ numericInput(.x, 
                                           label = map(modality_names(),~input[[.x]]),
                                           value = isolate(input[[.x]])))
  })
}

shinyApp(ui, server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-17 15:00:25

最后一个map函数需要是一个map2,以同时处理inputIdlabel的生成。为了获得标签的字符向量,我将一个map_chr嵌套到map2函数中:

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

ui <- fluidPage(
  numericInput("No_modalities", label = "Number of modalities/
                              subspecialties required",
               value = 1, min = 1, max = 100, step = 1),
  uiOutput("modality"),
  uiOutput("ui_modality_minutes")
)

server <- function(input, output, session) {
  modality_names <- reactive(paste0("Modality ", seq_len(input$No_modalities)))
  
  output$modality <- renderUI({
    map(modality_names(), ~ textInput(.x, label = paste(.x," Name"),
                                      value = isolate(input[[.x]])))
  })
  modality_minutes <- reactive(paste0("Modality minutes ",
                                      seq_len(input$No_modalities)))
  
  output$ui_modality_minutes <- renderUI({
    map2(modality_minutes(), map_chr(modality_names(),~input[[.x]]%||% ""), ~ numericInput(.x, 
                                           label = .y,
                                           value = isolate(input[[.x]])))
  })
}

shinyApp(ui, server)

inputmap_chr(modality_names(),~input[[.x]])中是NULL时,有时会出现错误,但是对于您的功能来说,这并没有什么区别(然后就没有显示名称)。

编辑

现在包括斯巴鲁精神的解决方案,以摆脱NULL

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

https://stackoverflow.com/questions/67571887

复制
相关文章

相似问题

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