Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R uiOutput以显示来自另一个uiOutput的输入值的标签_R_Shiny_Dynamic Ui_Uioutput - Fatal编程技术网

R uiOutput以显示来自另一个uiOutput的输入值的标签

R uiOutput以显示来自另一个uiOutput的输入值的标签,r,shiny,dynamic-ui,uioutput,R,Shiny,Dynamic Ui,Uioutput,标题可能很混乱,但我将在下面详细解释我的问题。我使用《掌握光泽》一书第10节“动态用户界面”作为指导。R中使用的库是 library(shiny) library(tidyverse) library(purrr) 我有一个数字输入,标记为所需的模式/子专业数量 我有一个名为模态的uiOutput作为响应,如果数字输入的输入发生变化,它可以有更多模态。如下图所示,如果数字变为2,则将有2个模式框,而不是1个 下面列出了上述操作的代码 # UI numericInput("No_m

标题可能很混乱,但我将在下面详细解释我的问题。我使用《掌握光泽》一书第10节“动态用户界面”作为指导。R中使用的库是

library(shiny)
library(tidyverse)
library(purrr)
我有一个数字输入,标记为
所需的模式/子专业数量

我有一个名为模态的uiOutput作为响应,如果数字输入的输入发生变化,它可以有更多模态。如下图所示,如果数字变为2,则将有2个模式框,而不是1个

下面列出了上述操作的代码

# 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]])))
  })

可复制代码如下所示

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)
库(闪亮)
图书馆(tidyverse)
图书馆(purrr)

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

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)
库(purrr)
图书馆(闪亮)

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

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)
库(purrr)
图书馆(闪亮)

非常感谢!我已经对它进行了测试,它是有效的,我还研究了如何消除错误,就是添加%| |%”。请参阅:map_chr(模态名称(),~input[.x]%| |%“”)。你能编辑你的答案以包含这段代码吗?这是一个聪明的解决方案,我已经编辑过:)非常感谢!我已经对它进行了测试,它是有效的,我还研究了如何消除错误,就是添加%| |%”。请参阅:map_chr(模态名称(),~input[.x]%| |%“”)。你能编辑你的答案以包含这段代码吗?这是一个聪明的解决方案,我已经编辑过:)