Блестящая вкладка с картой и резюме

Я хотел бы сделать приложение, где вы:

  1. загрузить набор данных с местоположениями и другими данными

  2. увидеть данные на карте и, при наведении курсора, вы можете увидеть некоторую информацию

  3. получить сводную статистику в другой вкладке

Я хочу сделать его как можно более интерактивным, чтобы пользователи могли фильтровать по странам в сводной статистике, но получать обзор информации на карте. Сказав это, я очень плохо знаком с R Shiny....

Пока у меня есть следующее, но карта не строит.

Может ли кто-нибудь помочь мне с этим?

{    ui <- fluidPage(

  # App title ----
  titlePanel("Uploading Files"),

  # Sidebar layout with input and output definitions ----
  sidebarLayout(

    # Sidebar panel for inputs ----
    sidebarPanel(

      # Input: Select a file ----
      fileInput("file1", "Choose CSV File",
                multiple = TRUE,
                accept = c("text/csv",
                           "text/comma-separated-values,text/plain",
                           ".csv")),

      # Horizontal line ----
      tags$hr(),

      # Input: Checkbox if file has header ----
      checkboxInput("header", "Header", TRUE),

      # Input: Select separator ----
      radioButtons("sep", "Separator",
                   choices = c(Comma = ",",
                               Semicolon = ";",
                               Tab = "\t"),
                   selected = ","),

      # Input: Select quotes ----
      radioButtons("quote", "Quote",
                   choices = c(None = "",
                               "Double Quote" = '"',
                               "Single Quote" = "'"),
                   selected = '"'),

      # Horizontal line ----
      tags$hr(),

      # Input: Select number of rows to display ----
      radioButtons("disp", "Display",
                   choices = c(Head = "head",
                               All = "all"),
                   selected = "head")

    ),

    # Main panel for displaying outputs ----
    mainPanel(

      tabsetPanel(type = "tabs", 
                  tabPanel("Map", fluidPage(
                    leafletOutput("mymap"), 
                    p(), 
                    actionButton("recalc", "New points")
                  )), plotOutput("plot"), 
                  tabPanel("Summary", fluidPage("Stats")), verbatimTextOutput("Summary"), 
                  tabPanel("Table"), tableOutput("contents"))

    )

  )
)

# Define server logic to read selected file ----
server <- function(input, output) {

  output$contents <- renderTable({

    d <- reactive({
      dist <- switch(input$dist,
                     norm = rnorm,
                     unif = runif,
                     lnorm = rlnorm,
                     exp = rexp,
                     rnorm)

      dist(input$n)
    })

    output$plot <- renderPlot({
      dist <- input$dist
      n <- input$n

      hist(d(),
           main = paste("r", dist, "(", n, ")", sep = ""),
           col = "#75AADB", border = "white")
    })


    # Generate a summary of the data ----
    output$summary <- renderPrint({
      summary(d())
    })

    # input$file1 will be NULL initially. After the user selects
    # and uploads a file, head of that data file by default,
    # or all rows if selected, will be shown.

    req(input$file1)

    df <- read.csv(input$file1$datapath,
                   header = input$header,
                   sep = input$sep,
                   quote = input$quote)

    if(input$disp == "head") {
      return(head(df))
    }
    else {
      return(df)
    }

  })

}

shinyServer(function(input, output, session) {

  # Return the requested dataset
  datasetInput <- reactive({
    input$file1
  })

  points <- eventReactive(input$recalc, {
    cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)
  }, ignoreNULL = FALSE)

  output$mymap <- renderLeaflet({
    leaflet() %>%
      addProviderTiles(providers$Stamen.TonerLite,
                       options = providerTileOptions(noWrap = TRUE)
      ) %>%
      addMarkers(data = points())
  })

  # Generate a summary of the dataset
  output$summary <- renderPrint({
    dataset <- datasetInput()
    summary(dataset)
  })

  # Show the first "n" observations
  output$view <- renderTable({
    head(datasetInput(), n = input$obs)
  })
})

# Run the application 
shinyApp(ui = ui, server = server)

}

0 ответов

Другие вопросы по тегам