Shiny 在用于开发闪亮应用程序(闪亮、传单、R studio)的数据集中不处理任何数据。错误:下标超出范围
当我在Shining应用程序中使用的数据集没有数据时,会出现一个错误:下标超出边界-应用程序保持空白,没有我的地图。我希望,即使在发生错误时,地图也会显示,但带有任何标记。我该怎么做 您好,我正在使用R Shining和传单开发一个应用程序,该应用程序提供一个带有标记的地图,每次我单击一个标记时,都会出现一个包含该特定标记信息的表格。此外,我还通过if/else语句开发了一个侧栏,以便搜索我想要的信息。通过解释,我可以搜索有关特定年份、该年份的某个期间、特定情况以及该情况的状态的信息。 一切运行正常,但唯一的问题是处理数据集中丢失的信息(我没有一年中特定时期的数据)。当我没有数据时,会出现“下标超出范围”错误。我希望除此之外,地图显示,但没有标记。所以,只有简单的地图。我已经开发了if和else语句,但它们并不成功。即使出现闪亮的错误,我如何保留地图?Shiny 在用于开发闪亮应用程序(闪亮、传单、R studio)的数据集中不处理任何数据。错误:下标超出范围,shiny,mapping,leaflet,Shiny,Mapping,Leaflet,当我在Shining应用程序中使用的数据集没有数据时,会出现一个错误:下标超出边界-应用程序保持空白,没有我的地图。我希望,即使在发生错误时,地图也会显示,但带有任何标记。我该怎么做 您好,我正在使用R Shining和传单开发一个应用程序,该应用程序提供一个带有标记的地图,每次我单击一个标记时,都会出现一个包含该特定标记信息的表格。此外,我还通过if/else语句开发了一个侧栏,以便搜索我想要的信息。通过解释,我可以搜索有关特定年份、该年份的某个期间、特定情况以及该情况的状态的信息。 一切运行
是否需要在服务器中更改某些内容?还是用户界面 服务器代码:
pal <- colorFactor(c("lawngreen", "red", "darkgray", "yellow", "orange"),
domain = c("Confirmed negative", "Confirmed positive", "Don't know", "Likely negative", "Likely positive"))
shinyServer(function(input, output) {
data_for_map <- reactive({
if (input$disease_choice != "All") {
if (input$disease_quarter != "All") {
if (input$disease_status != "All") {
data_to_plot <- pig_data_long %>%
filter(disease == input$disease_choice, status == input$disease_status,
quarter == input$disease_quarter, year == input$disease_year)
} else {
data_to_plot <- pig_data_long %>%
filter(disease == input$disease_choice, quarter == input$disease_quarter, year == input$disease_year)
}
} else {
if (input$disease_status != "All") {
data_to_plot <- pig_data_long %>%
filter(disease == input$disease_choice, status == input$disease_status, year == input$disease_year)
} else {
data_to_plot <- pig_data_long %>%
filter(disease == input$disease_choice, year == input$disease_year)
}
}
} else {
if (input$disease_quarter != "All") {
if (input$disease_status != "All") {
data_to_plot <- pig_data_long %>%
filter(status == input$disease_status, quarter == input$disease_quarter, year == input$disease_year)
} else {
data_to_plot <- pig_data_long %>%
filter(quarter == input$disease_quarter, year == input$disease_year)
}
} else {
if (input$disease_status != "All") {
data_to_plot <- pig_data_long %>%
filter(status == input$disease_status, year == input$disease_year)
} else {
data_to_plot <- pig_data_long %>%
filter(year == input$disease_year)
}
}
}
output$map <- renderLeaflet({
leaflet("map") %>%
setView(lng = -3.64, lat = 57.36, zoom = 7) %>%
addTiles() %>%
addCircleMarkers(data = data_for_map()[[2]],
radius = 4,
color = "black",
stroke = FALSE,
fillOpacity = 1,
popup = ~(slapmark)) %>%
addCircleMarkers(data = data_for_map()[[1]],
color = ~pal(status),
stroke = FALSE,
fillOpacity = 1,
popup = ~(paste(quarter, disease, status, sep = ": ")),
layerId = ~(paste(slapmark, disease, status, sep = "-"))) %>%
addLegend("bottomright",
colors = c("lawngreen", "yellow", "orange", "red", "darkgray"),
labels = c("Confirmed negative", "Likely negative", "Likely positive", "Confirmed positive", "Don't know"),
title = "Legend",
labFormat = labelFormat(),
opacity = 1)
})
output$clicked = DT::renderDataTable({
point = input$map_marker_click
if (!is.null(point)) {
point_slapmark = strsplit(point$id, "-") [[1]][1]
data_for_map()[[1]] %>%
filter(slapmark == point_slapmark) %>%
select(-latitude, -longitude) %>%
DT::datatable(data_for_map, options = list(dom = 'ltipr'),
class = "display", callback = JS("return table;"),
style = "default")
}
})
})
pal%
addCircleMarkers(data=data\u for_map()[[2]],
半径=4,
color=“黑色”,
笔划=假,
fillOpacity=1,
弹出=~(slapmark))%>%
addCircleMarkers(data=data\u for_map()[[1]],
颜色=~pal(状态),
笔划=假,
fillOpacity=1,
弹出=~(粘贴(季度、疾病、状态、sep=“:”)),
layerId=~(粘贴(slapmark、疾病、状态、sep=“-”))%%>%
addLegend(“右下角”,
颜色=c(“绿色”、“黄色”、“橙色”、“红色”、“黑色”),
标签=c(“确认阴性”、“可能阴性”、“可能阳性”、“确认阳性”、“不知道”),
title=“图例”,
labFormat=labelFormat(),
不透明度=1)
})
输出$clicked=DT::renderDataTable({
点=输入$map\u标记\u单击
如果(!为.null(点)){
点_slapmark=strsplit(点$id,“-”[[1]][1]
_map()[[1]]%>%
过滤器(slapmark==点\u slapmark)%>%
选择(-纬度,-经度)%%>%
DT::datatable(地图的数据,选项=列表(dom='ltipr'),
class=“display”,callback=JS(“返回表;”),
style=“default”)
}
})
})
您可以尝试创建一个简单的map对象,只需如下设置视图即可
output$map <- renderLeaflet({
leaflet() %>%
setView(lng = -3.64, lat = 57.36, zoom = 7)
})
嗨,谢谢你的帮助!它不起作用。。。我不知道我是否真的需要使用代理。。我想对你说。。出现错误并显示“下标超出范围”时,运行基本映射
leafletProxy("map") %>%
addTiles() %>%
addCircleMarkers(data = data_for_map()[[2]],
radius = 4,
color = "black",
stroke = FALSE,
fillOpacity = 1,
popup = ~(slapmark)) %>%
addCircleMarkers(data = data_for_map()[[1]],
color = ~pal(status),
stroke = FALSE,
fillOpacity = 1,
popup = ~(paste(quarter, disease, status, sep = ": ")),
layerId = ~(paste(slapmark, disease, status, sep = "-"))) %>%
addLegend("bottomright",
colors = c("lawngreen", "yellow", "orange", "red", "darkgray"),
labels = c("Confirmed negative", "Likely negative", "Likely positive", "Confirmed positive", "Don't know"),
title = "Legend",
labFormat = labelFormat(),
opacity = 1)