【问题标题】:Interactive SelecBox Shiny交互式选择框闪亮
【发布时间】:2015-12-10 16:44:41
【问题描述】:

我是 Shiny/R 的新手,我无法弄清楚以下几点:

我想在panel 上绘制 2 个selectInput。第一个我想选择一个州(例如“阿拉巴马”),第二个我想选择与第一个面板上选择的州相对应的城市。

这是代码:

TabCit <- read.csv(file= "~/Tab_Aux/Cities.csv", encoding = "UTF-8", header=TRUE, stringsAsFactors = TRUE, sep = ",")

ufname <- sort(as.vector(unique(TabCit[,8])))


ui <- fluidPage( 

  fluidRow(
    column(1), 
    column(2,selectInput(inputId =  "inufname", "variable", ufname ,  width = "100px")), 
    column(3,selectInput(inputId =  "incidname", "variable", uiOutput(“cituf”) ))
  )


)

server <- function(input,output) {

  output$cituf <- renderUI({ as.vector (sort(TabCit[TabCit[,8]==input$inufname,7]))}) 

}

shinyApp(ui=ui, server=server)

数据 TabCit 示例

"Code1,"Code2","Code3","Code4","Code5","Code6","City","State" 1,"1","1","1","1","1","ABAETE","MG" 1,"1","1","1","1","1","ABAETETUBA","PA" 1,"1","1","1","1","1","ABATIA","PR" 1,"1","1","1","1","1","ABELARDO LUZ","SC" 1,"1","1","1","1","1","ABREU E LIMA","PE" 1,"1","1","1","1","1","ACAILANDIA","MA" 1,"1","1","1","1","1","ACARAU","CE" 1,"1","1","1","1","1","ACAUA","PI" 1,"1","1","1","1","1","ACRELANDIA","AC" 1,"1","1","1","1","1","ACREUNA","GO" 1,"1","1","1","1","1","ACU","RN" 1,"1","1","1","1","1","ADAMANTINA","SP" 1,"1","1","1","1","1","ADUSTINA","BA" 1,"1","1","1","1","1","AFOGADOS DA INGAZEIRA","PE" 1,"1","1","1","1","1","AFONSO BEZERRA","RN" 1,"1","1","1","1","1","AFONSO 克劳迪奥","ES" 1,"1","1","1","1","1","AFRANIO","PE" 1,"1","1","1","1","1","AGUA BOA","MT" 1,"1","1","1","1","1","阿瓜布兰卡","AL" 1,"1","1","1","1","1","阿瓜克拉拉","MS" 1,"1","1","1","1","1","AGUAI","SP" 1,"1","1","1","1","1","阿瓜斯贝拉斯","PE" 1,"1","1","1","1","1","AGUAS DE LINDOIA","SP" 1,"1","1","1","1","1","阿瓜斯德圣佩德罗","SP" 1,"1","1","1","1","1","AGUAS FORMOSAS","MG" 1,"1","1","1","1","1","AGUAS LINDAS DE GOIAS","GO" 1,"1","1","1","1","1","AGUDO","RS" 1,"1","1","1","1","1","AGUDOS","SP" 1,"1","1","1","1","1","AIMORES","MG" 1,"1","1","1","1","1","ALAGOA GRANDE","PB" 1,"1","1","1","1","1","ALAGOINHAS","BA" 1,"1","1","1","1","1","阿尔坎塔拉","MA" 1,"1","1","1","1","1","ALCOBACA","BA" 1,"1","1","1","1","1","ALEGRE","ES" 1,"1","1","1","1","1","ALEGRETE","RS" 1,"1","1","1","1","1","ALEGRETE DO PIAUI","PI" 1,"1","1","1","1","1","ALEM PARAIBA","MG" 1,"1","1","1","1","1","ALENQUER","PA" 1,"1","1","1","1","1","亚历山大","RN" 1,"1","1","1","1","1","ALEXANIA","GO"

【问题讨论】:

  • 我们无权访问您的数据使用 dput() 所以我们可以运行您的脚本。
  • Code1,"Code2","Code3","Code4","Code5","Code6","City","State" 1,"1","1","1" ,"1","1","ABAETE","MG" 1,"1","1","1","1","1","ABAETETUBA","PA" 1,"1" ,"1","1","1","1","ABATIA","PR" 1,"1","1","1","1","1","ABELARDO LUZ" ,"SC" 1,"1","1","1","1","1","ABREU E LIMA","PE" 1,"1","1","1"," 1","1","ACAILANDIA","MA" 1,"1","1","1","1","1","ACARAU","CE" 1,"1"," 1","1","1","1","ACAUA","PI" 1,"1","1","1","1","1","ACRELANDIA","AC " 1,"1","1","1","1","1","ACREUNA","GO" 1,"1","1","1","1","1 ","ACU","RN" 1,"1","1","1","1","1","ADAMANTINA","SP" 1,"1","1","1 ","1","1","ADUSTINA","BA"

标签: r shiny


【解决方案1】:

这里不需要uiOutput。它仅在您想要动态生成新的或交换旧的 UI 元素时使用。

在您的情况下,使用 observeEvent() 捕获对您的第一个 selectInput 的更新并更新第二个就足够了:

TabCit <- read.csv(file= "~/Tab_Aux/Cities.csv", encoding = "UTF-8", header=TRUE, stringsAsFactors = TRUE, sep = ",")

ufname <- sort(as.vector(unique(TabCit[,8])))

library(shiny)

ui <- fluidPage( 

  fluidRow(
    column(1), 
    column(2,selectInput(inputId =  "inufname", "variable", ufname ,  width = "100px")), 
    column(3,selectInput(inputId =  "incidname", "variable", "" )) # Create an empty selectInput
  )


)

server <- function(input,output, session) { # include the session in your server

  #Here you use observeEvent to catch changes in the variable input$inufname
  #and update the content of your second selectInput
  observeEvent(input$inufname,
    updateSelectInput(session,inputId = "incidname", choices = as.vector(sort(TabCit[TabCit[,8]==input$inufname,7])))
  )

}

shinyApp(ui=ui, server=server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2021-08-03
    • 2015-12-06
    • 2021-10-14
    相关资源
    最近更新 更多