Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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 基于对另一个闪亮小部件的选择创建一个或多个闪亮小部件_R_Shiny - Fatal编程技术网

R 基于对另一个闪亮小部件的选择创建一个或多个闪亮小部件

R 基于对另一个闪亮小部件的选择创建一个或多个闪亮小部件,r,shiny,R,Shiny,下面我有一个闪亮的应用程序,用户可以从dt data.frame中选择一个或多个列名 name<-c("John","Jack","Bill") value1<-c(2,4,6) add<-c("SDF","GHK","FGH") value2<-c(3,4,5) dt<-data.frame(name,value1,add,value2) 高级

下面我有一个闪亮的应用程序,用户可以从dt data.frame中选择一个或多个列名

name<-c("John","Jack","Bill")
value1<-c(2,4,6)
add<-c("SDF","GHK","FGH")
value2<-c(3,4,5)
dt<-data.frame(name,value1,add,value2)

高级,我将在UI中静态创建<代码>选择输入< /代码>,并在您的拾取器改变时考虑使用<代码> UpDATESeLeTyPrime>代码>。大致如下所示(注意服务器函数中添加了

session
变量):


ui当我尝试选择第二个值时,它会崩溃Yep,这就是为什么需要修改
label
choices
。我不确定想要的行为是什么。可能类似于
purrr::reduce(输入$p1,~c(.x,dt[.y]]),.init=NULL)
。或者你是说你想让selectInputs的数量根据所选的标题而有所不同?如果你想要的是后者,请看这篇文章:是的,我想要第二个标题的解决方案。如果我选择4,我想要一个具有4个SelectInputs的解决方案,则标签应与列名相同
library(shiny)
library(shinyWidgets)

# ui object
ui <- fluidPage(
    titlePanel(p("Spatial app", style = "color:#3474A7")),
    sidebarLayout(
        sidebarPanel(
            pickerInput(
                inputId = "p1",
                label = "Select Column headers",
                choices = colnames( dt),
                multiple = TRUE,
                options = list(`actions-box` = TRUE)
            ),
            uiOutput("widg")
            
            
        ),
        
        mainPanel(
            
        )
    )
)

# server()
server <- function(input, output) {
   
    output$widg<-renderUI({
        
    })
    
   
}

# shinyApp()
shinyApp(ui = ui, server = server)
ui <- fluidPage(
  titlePanel(p("Spatial app", style = "color:#3474A7")),
  sidebarLayout(
    sidebarPanel(
      pickerInput(
        inputId = "p1",
        label = "Select Column headers",
        choices = colnames( dt),
        multiple = TRUE,
        options = list(`actions-box` = TRUE)
      ),
      selectInput("columnValues", "", choices = "")
      
      
    ),
    
    mainPanel(
      
    )
  )
)

# server()
server <- function(input, output, session) {
  
  observeEvent(input$p1, {
    
    updateSelectInput(
      session, 
      inputId = "columnValues", 
      label = paste0("Choose from: ", input$p1),
      choices = dt[[input$p1]]
    )
    
  })
  
  
}

# shinyApp()
shinyApp(ui = ui, server = server)