我很难理解为什么selectInput
无效。
包含conditionalPanel
后,selectInput
中的John Doe突然切换到Joe Blow的名称不再有效 - 日期不会更新,地图会变灰。
我不明白为什么会这样。它唯一可行的方法是点击no_date
然后返回并更改名称。然后事情开火了。但我无法弄清楚为什么/如何破坏它。
最初,事情很好:
但是当我选择Joe Blow时:
请注意,日期不会改变。
conditionalPanel
发生了一些奇怪的事情,但是对于我的生活,我被困住了。感谢您阅读本文。
UI.R
library(shiny)
library(ggplot2)
library(dplyr)
library(leaflet)
DF <- data.frame(lon=c(-120.6596156, -87.27751, -119.7725868, -124.2026, -117.1858759),
lat=c(35.2827524, 33.83122, 36.7468422, 41.75575, 34.5008311),
date=c('2014-03-14', '2014-01-11', '2013-11-22', '2012-08-23', '2013-08-23'),
city=c('San Luis Obispo', 'Jasper', 'Fresno', 'Crescent City', 'Apple Valley'),
P1_name=c('John Doe', 'John Doe', 'John Doe', 'John Doe', 'Joe Blow'))
DF[, c('date', 'city', 'P1_name')] <- sapply(DF[, c('date', 'city', 'P1_name')], as.character)
server <- function(input, output, session) {
output$fdate<-renderUI({
selectInput('dates', 'Select date', choices=DF[which(DF$P1_name == input$person), ]$date, selectize = FALSE)
})
output$map<-renderLeaflet({
DF <- filter(DF, P1_name==input$person, date==input$dates)
output$city <-renderText({c("Location:", DF$city)})
m <- leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
setView(lng=DF$lon, lat=DF$lat, zoom=5) %>%
addMarkers(lng=DF$lon, lat=DF$lat, popup=DF$city)
})
}
ui <- fluidPage(
titlePanel("Testing Shiny"),
sidebarLayout (
sidebarPanel(
selectInput('person', 'Select person', choices=unique(DF$P1_name), selectize = FALSE),
radioButtons('radio', 'Select method', choices=c('show_date', 'no_date'), selected = NULL, inline = TRUE),
conditionalPanel(
condition = "input.radio == 'show_date'",
uiOutput('fdate')
),
textOutput("city")
),
mainPanel(
leafletOutput('map')
)
))
shinyApp(ui = ui, server = server)
答案 0 :(得分:3)
基本上输出$ fdate应该被称为与'dates'相同的名称
library(shiny)
library(ggplot2)
library(dplyr)
library(leaflet)
DF <- data.frame(lon=c(-120.6596156, -87.27751, -119.7725868, -124.2026, -117.1858759),
lat=c(35.2827524, 33.83122, 36.7468422, 41.75575, 34.5008311),
date=c('2014-03-14', '2014-01-11', '2013-11-22', '2012-08-23', '2013-08-23'),
city=c('San Luis Obispo', 'Jasper', 'Fresno', 'Crescent City', 'Apple Valley'),
P1_name=c('John Doe', 'John Doe', 'John Doe', 'John Doe', 'Joe Blow'))
DF[, c('date', 'city', 'P1_name')] <- sapply(DF[, c('date', 'city', 'P1_name')], as.character)
server <- function(input, output, session) {
output$dates<-renderUI({
selectInput('dates', 'Select date', choices=DF[which(DF$P1_name == input$person), ]$date, selectize = FALSE)
})
output$map<-renderLeaflet({
validate(
need(!is.null(input$dates),""),
need(!is.null(input$person),"")
)
DF <- filter(DF, P1_name==input$person, date==input$dates)
output$city <-renderText({c("Location:", DF$city)})
m <- leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
setView(lng=DF$lon, lat=DF$lat, zoom=5) %>%
addMarkers(lng=DF$lon, lat=DF$lat, popup=DF$city)
})
}
ui <- fluidPage(
titlePanel("Testing Shiny"),
sidebarLayout (
sidebarPanel(
selectInput('person', 'Select person', choices=unique(DF$P1_name), selectize = FALSE),
radioButtons('radio', 'Select method', choices=c('show_date', 'no_date'), selected = NULL, inline = TRUE),
conditionalPanel(
condition = "input.radio == 'show_date'",
uiOutput('dates')
),
textOutput("city")
),
mainPanel(
leafletOutput('map')
)
))
shinyApp(ui = ui, server = server)