如何为renderLeaflet的管道处理创建一个函数

How to make a function for pipe processing of renderLeaflet

我对shiny + leaflet中渲染Leaflet的处理有疑问。 由于管道处理(%>%)变长,我们想通过函数使代码紧凑。

一个是带有reder Leaflet的文件。另一个是render Leaflet中使用的addAwesomeMarkers。

文件name:ms_method.R

library(shiny)
library(leaflet)

basepath <- "C:/Users/XXXXX/"
source(paste0(basepath,"ms_method_ex.R"),encoding="utf-8")

ui <- fluidPage(
  
  leafletOutput('maps')
)

server <- function(input, output, session) {

   output$maps <- renderLeaflet({
    
    leaflet()%>%
      addTiles()%>%
      setView(lng=139.8,lat=35.7,zoom=12)%>%
      # addAwesomeMarkers(
      #     lng = c(139.8),
      #     lat = c(35.7),
      #     )
      f1()
    }) 
}
shinyApp(ui, server)

f1 函数是在外部文件中定义的函数。它由源语句读取。

接下来是在另一个文件中定义的函数。

文件name:ms_method_ex.R

f1 <- function(){
  addAwesomeMarkers(
    lng = c(139.8),
    lat = c(35.7),
  )}
  

这会导致错误。 我应该做什么样的处理? 如果有人知道,请告诉我。另外,如果你能告诉我一个有用的网页,我将不胜感激。

addAwesomeMarkers 的第一个参数是 map。参见 ?addAwesomeMarkers

为了使您的功能正常工作,是否在我们的管道外部需要一个 map 参数,即做:

f1 <- function(map) {
  addAwesomeMarkers(map,
    lng = c(139.8),
    lat = c(35.7),
  )}