Сокращение повторяющегося кода для flexdashboard - PullRequest
0 голосов
/ 13 мая 2019

В настоящее время я использую библиотеку flexdashboard для создания панели мониторинга.Однако я заметил, что в файле rmarkdown много повторяющегося кода.Пример таков:

Первое повторение

leaflet() %>% 
  addTiles() %>% 
  fitBounds(103.664712, 1.411486, 104.02233, 1.24164) %>%
  addCircleMarkers(raw_data_n2$lng, 
                 raw_data_n2$lat,
                 color = raw_data_n2$col_n2_vacancy,
                 radius = 2, 
                 fill = T,

 fillOpacity = 0.2,
                 opacity = 0.6,
                 popup = paste(raw_data_n2$centre_name, 
                               sep="")) %>%
  addLegend("bottomleft", 
            colors = c("red", "yellow", "green"),
            labels = c("No vacancies for the next 1-2 years",
                       "Vacancies within 6 months",
                       "Immediate vacancies"), 
            opacity = 0.8)

Второе повторение

leaflet() %>% 
  addTiles() %>% 
  fitBounds(103.664712, 1.411486, 104.02233, 1.24164) %>%
  addCircleMarkers(raw_data_k1$lng, 
                 raw_data_k1$lat,
                 color = raw_data_k1$col_k1_vacancy,
                 radius = 2, 
                 fill = T,
                 fillOpacity = 0.2,
                 opacity = 0.6,
                 popup = paste(raw_data_k1$centre_name, 
                               sep="")) %>%
  addLegend("bottomleft", 
            colors = c("red", "yellow", "green"),
            labels = c("No vacancies for the next 1-2 years",
                       "Vacancies within 6 months",
                       "Immediate vacancies"), 
            opacity = 0.8)

Есть ли способизменить этот код в rmarkdown так, чтобы это повторение было уменьшено?

1 Ответ

2 голосов
/ 13 мая 2019

Один из вариантов - создать функцию с повторяющимся кодом и вызывать ее каждый раз, когда вам это нужно.

myOwnLeaflet <- function(df){

  df %>% 
    leaflet() %>% 
    addTiles() %>% 
    fitBounds(103.664712, 1.411486, 104.02233, 1.24164) %>%
    addCircleMarkers(
      df$lng, 
      df$lat,
      color = df$col_n2_vacancy,
      radius = 2, 
      fill = T,
      fillOpacity = 0.2,
      opacity = 0.6,
      popup = paste(centre_name, sep = "")
    ) %>%
    addLegend(
      "bottomleft", 
      colors = c("red", "yellow", "green"),
      labels = c("No vacancies for the next 1-2 years",
                 "Vacancies within 6 months",
                 "Immediate vacancies"), 
      opacity = 0.8)

}
...