Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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 根据用户输入,将n个反应式单选按钮添加到闪亮的应用程序_R_Radio Button_Subset_Shiny - Fatal编程技术网

R 根据用户输入,将n个反应式单选按钮添加到闪亮的应用程序

R 根据用户输入,将n个反应式单选按钮添加到闪亮的应用程序,r,radio-button,subset,shiny,R,Radio Button,Subset,Shiny,我正在尝试创建一个闪亮的应用程序,用户可以在其中从数据框中选择变量,以便将数据子集。输出(最终)将是一个包含用户子集的数据表。我需要根据用户为子集选择的变量数量创建n个输入框。理想情况下,输入框将是动态单选按钮(用于子集因子)。我还没有打印数据框,但我已经能够创建多个单选按钮。我已经习惯于使用mtcars数据集使用以下代码来实现这一点: server.R library(shiny) shinyServer( function(input, output, session) { outp

我正在尝试创建一个闪亮的应用程序,用户可以在其中从数据框中选择变量,以便将数据子集。输出(最终)将是一个包含用户子集的数据表。我需要根据用户为子集选择的变量数量创建n个输入框。理想情况下,输入框将是动态单选按钮(用于子集因子)。我还没有打印数据框,但我已经能够创建多个单选按钮。我已经习惯于使用
mtcars
数据集使用以下代码来实现这一点:

server.R

library(shiny)

shinyServer( function(input, output, session) {

  output$variables <- renderUI({
    numVar <- length(as.integer(input$in0))

    lapply(1:numVar, function(i) {
      list(radioButtons("dynamic", input$in0, 
                        choices = c("Choice one" = "one", "Choice two" = "two"), selected = "one"))
    })
  })
})  
library(shiny)

shinyUI(pageWithSidebar (

  headerPanel("mtcars subset"),

  sidebarPanel(
    selectInput(inputId = 'in0', label = 'Choose variables', 
                choices = colnames(mtcars), 
                multiple = TRUE, selectize = TRUE),
    uiOutput("variables")
  ),
  mainPanel()
)) 
该代码创建n个单选按钮;但是,由于某些原因,它默认打印两组按钮。此外,每组新按钮的名称始终是选定的第一个变量的名称。此外,在一个集合中选择
choice one
,会更改其他集合的选择。我希望每个单选按钮都有一个与数据框中的变量相对应的名称,并且我希望每个按钮的选择独立于其他选定按钮。

您的问题(请参见警告)是,每个
单选按钮总是使用相同的名称,而您应该使用
I
对它们进行索引:

lapply(1:numVar, function(i) {
      list(radioButtons(paste0("dynamic",input$in0[i]), input$in0[i], 
                        choices = c("Choice one" = "one", "Choice two" = "two"), selected = "one"))
    })
或者更优雅一点:

lapply(input$in0, function(x) {
    list(radioButtons(paste0("dynamic",x), x, 
                     choices = c("Choice one" = "one", 
                                 "Choice two" = "two"), selected = "one"))
    })

杰出的非常感谢。