R 基于对另一个闪亮小部件的选择创建一个或多个闪亮小部件
下面我有一个闪亮的应用程序,用户可以从dt data.frame中选择一个或多个列名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) 高级
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)