r - R闪亮对传单输入做出反应
问题描述
所以我刚开始使用 R 并试图制作一个传单应用程序来响应我在滑块中的用户输入。我试图通过使用滑块的输入来对我正在使用的数据进行子集化,但它不起作用。我收到错误“无效的“类型”(列表)的参数”。
我在下面附上了我的代码:
titlePanel("Hello Shiny!"),
sidebarLayout(
sidebarPanel(
selectizeInput(inputId = 'lsoa',
label = 'Choose your lsoa',
choices = c('Ealing' = 'ealing',
'Camden' = 'camden') ,
selected = 'camden', multiple = TRUE),
uiOutput(outputId = 'time_var'),
sliderInput("Date_of_year",
"Dates",
min = as.Date("2017-09-01","%Y-%m-%d"),
max = as.Date("2018-07-31","%Y-%m-%d"),
value=as.Date("2017-09-01"),
timeFormat="%Y-%m-%d"),
uiOutput(outputId = 'datevar'),
sliderInput("slider_hours", "Hours:", min=0, max=23, value=0, step = 1),
uiOutput(outputId = 'hour_var')
# sliderInput("slider_mins", "Mins:",min = 0, max = 45, value = 0, step = 15),
#
# uiOutput(outputId = 'min_var')
),
mainPanel(
leafletOutput(outputId = "map")
)
)
)
server <- function(input, output) {
output$map <- renderLeaflet({
m <- leaflet() %>%
addTiles()%>%
setView(lng = -0.1911, lat = 51.5371, zoom = 11)%>%
addMarkers(data = subset(noise_sample, hour_time == input$slider_hours ),
lng = ~longitude,
lat = ~latitude,
popup = ~as.character(lpaeq_T),
label = ~as.character(lsoa11nm))%>%
addPolygons(data = subset(main_shape, grepl(paste(input$lsoa, collapse = '|'),
tolower(lsoa11nm))),
color = "#444444",
weight = 1,
smoothFactor = 0.5,
opacity = 1.0,
fillOpacity = 0.5)
m
})
}
shinyApp(ui, server)
这里 'hour_time' 是我的 noise_sample 数据中列的名称。它应该只给出一个数字,应该与我的 slider_hours 选择的数字相同。
解决方案
它正在工作,但您可以在服务器部分添加“验证”功能,以防您的选择为空:
noise_sample <- tibble("longitude" = c(-0.1914,-0.1943), "latitude"= c(51.5371,51.6),
"lpaeq_T"= c("toto","tata"), "lsoa11nm"= c("toto","tata"),
"hour_time" = c(1,2))
ui <- fluidPage(
titlePanel("Hello Shiny!"),
sidebarLayout(
sidebarPanel(
selectizeInput(inputId = 'lsoa',
label = 'Choose your lsoa',
choices = c('Ealing' = 'ealing',
'Camden' = 'camden') ,
selected = 'camden', multiple = TRUE),
uiOutput(outputId = 'time_var'),
sliderInput("Date_of_year",
"Dates",
min = as.Date("2017-09-01","%Y-%m-%d"),
max = as.Date("2018-07-31","%Y-%m-%d"),
value=as.Date("2017-09-01"),
timeFormat="%Y-%m-%d"),
uiOutput(outputId = 'datevar'),
sliderInput("slider_hours", "Hours:", min=0, max=23, value=1, step = 1),
uiOutput(outputId = 'hour_var')
# sliderInput("slider_mins", "Mins:",min = 0, max = 45, value = 0, step = 15),
#
# uiOutput(outputId = 'min_var')
),
mainPanel(
leafletOutput(outputId = "map")
)
)
)
server <- function(input, output) {
output$map <- renderLeaflet({
data1 <- subset(noise_sample, hour_time == input$slider_hours)
validate(
need(dim(data1)[1] >0, "No data")
)
m <- leaflet() %>%
addTiles()%>%
setView(lng = -0.1911, lat = 51.5371, zoom = 11)%>%
addMarkers(data = data1,
lng = ~longitude,
lat = ~latitude,
popup = ~as.character(lpaeq_T),
label = ~as.character(lsoa11nm))
# %>%
# addPolygons(data = subset(main_shape, grepl(paste(input$lsoa, collapse = '|'),
# tolower(lsoa11nm))),
# color = "#444444",
# weight = 1,
# smoothFactor = 0.5,
# opacity = 1.0,
# fillOpacity = 0.5)
m
})
}
shinyApp(ui, server)
推荐阅读
- python - 如何在 tkinter、python 中更改滚动条的形状?
- java - XML 文档结构必须在同一个实体内开始和结束?
- python-3.x - Apache 无法启动,找不到编码
- r - 如何在 R 中制作这个图表 - 比较排名?
- elasticsearch - Elasticsearch 使用 doc_as_upsert 返回文档丢失错误
- matplotlib - 鼠标悬停在散点图上时显示名称+坐标
- mysql - 如何在 MySQL 中加快一列中所有值的简单更新
- apache-kafka - docker-compose.yml 带有 3 个 Zookepers 和 1 个使用公共 IP 设置的代理 - 代理无法以没有有意义的日志启动(但与 1 个 Zookeeper 一起使用)
- sql-server - 如何在 ssms 中将 sysadmin 服务器角色授予 Windows 默认用户
- javascript - usestate 没有获取更新的值