Когда в наборе данных, который я использую в блестящем приложении, нет данных, появляется ошибка: индекс за пределами - и приложение остается пустым, без моей карты. Я хочу, чтобы даже когда произошла ошибка, отображается карта, но с любым маркером. Как я могу это сделать?Работа без данных в наборе данных, используемом для разработки блестящего приложения (блестящий, рекламный листок, студия R). ошибка: индекс за пределами
Привет, Я использую R блестящий и листовки для разработки приложения, которое дает карту с маркерами, и каждый раз, когда я нажимаю маркер, появляется таблица с информацией об этом конкретном маркере. Кроме того, у меня есть боковая панель, разработанная с помощью инструкций if/else, поэтому я могу искать информацию, которую я хочу. Объясняя, я могу искать информацию о конкретном году, периоде этого года, конкретном состоянии и статусе для этого условия. Все работает нормально, но единственная проблема связана с отсутствием информации в моем наборе данных (у меня нет данных за определенный период в году). Когда у меня нет данных, ошибка в блеске означает, что «индекс за пределами границ». Я хочу, чтобы в дополнение к этому карта появилась, но без маркеров. Итак, только простая карта. Я уже разработал инструкции 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")
}
})
})
Привет, спасибо вам за помощь! Он не работает ... и я не знаю, действительно ли мне нужно использовать буклетпрокси. Я хочу сказать, чтобы он был блестящим .. », когда ошибка возникает и появляется« подстрочный код за пределами границ », запустите базовую карту», –