0

R Shiny中的问题,使用时

  • 渲染界面
  • ui输出

动态生成控件集,例如:

  • 复选框
  • 单选按钮
  • 文本框

如何通过引发事件来获取这些值或填充输入?

照原样,那些生成的控件似乎是“仅显示”。进行选择、标记复选框或输入数据只会更新显示,但不会创建事件,并且不会将值填充到“输入”变量( ReactiveValues )中;因此,Shiny 服务器进程没有收到任何内容。

如果这些控制输入实际上是隔离的,那么它完全破坏了动态创建控制的意义。

显然,我希望这个问题已经得到解决,但我的搜索还没有出现。

在我的具体情况下,用户界面允许用户:

  1. 选择并上传 CSV 文件。
  2. 该逻辑识别数字、日期和分组列,并生成 3 组单选按钮控件集。这个想法是你选择你感兴趣的列。
  3. 选择一个分组列应该将该 columnID 返回到服务器,在那里它将显示一个离散的组列表,从中进行选择。这会失败,因为选择不会生成事件,并且输入变量(提供给 server.R)仅包含来自静态控件的 ReactiveValues。

也就是说,控件的显示看起来不错。


步骤#0 截图:

步骤#1 截图:


在 server.R 端,我使用如下代码来创建单选按钮。

    output$radioChoices <- reactive({
...
        inputGroup <- renderUI({
        input_list <- tagList(
           radioButtons(inputId = "choiceGrp", label = "Available Grouping Columns", choices = grpColumnNames,  inline = TRUE, selected = selectedGrp),
           radioButtons(inputId = "choiceNumb",label = "Available Numerical Columns",choices = numColumnNames,  inline = TRUE, selected = selectedNum),
           radioButtons(inputId = "choiceDate",label = "Available Date Columns",     choices = dateColumnNames, inline = TRUE, selected = selectedDate),
           hr()
        )
        do.call(tagList, input_list)
      })
      print(inputGroup)
      output$radioChoices <- inputGroup
    })

我玩过提交按钮和 ActionButtons 来尝试强制事件,但没有骰子。我的头骨风暴现在要去“我需要在这里以某种方式使用 Javascript 吗?”之类的地方。

非常感谢所有在这件事上借给我周期的人。

4

1 回答 1

0

我不确定我是否理解你的问题。这是一个 MWE,它访问由uiOutput/创建的小部件的值renderUI。由uiOutput/创建的小部件的值renderUI可以像任何其他小部件一样访问。

如果这不能满足您的需求,请提供更多详细信息。

library(shiny)

ui <-
  fluidPage(
    uiOutput("dataInput"),
    textOutput("result")
  )

server <- function(input, output, session) {
  output$dataInput <- renderUI({
    selectInput("beatles", "Who's your favourite Beatle?", choices=c("- Select one -"="", "John", "Paul", "George", "Ringo"))
  })
  
  output$result <- renderText({
    req(input$beatles)
    
    paste0("You chose ", input$beatles)
  })
}

shinyApp(ui, server)
于 2021-12-28T11:27:48.460 回答