簡體   English   中英

包裝函數; 返回函數的函數

[英]wrapper function; function that returns function

我不確定如何為包含magrittr管道(%>%)的東西編寫包裝函數。 我正在嘗試創建一個包裝函數,該函數根據圖層類型返回addPolyline()addPolygon()addCircleMarkers() ,但是我沒有成功。 答案似乎將在Hadley的Advanced材料中,但最有可能超過了我。 作為一個簡單的示例,如何使以下示例工作:

library(leaflet)

wrapper <- function() {
  myfunc <- function() {addPolylines(data = leaflet::atlStorms2005)}
  return(myfunc)
}

# I want this
leaflet() %>% addTiles() %>% addPolylines(data = leaflet::atlStorms2005)

# but I need a wrapper function
leaflet() %>% addTiles() %>% wrapper()

似乎您需要稍微修改包裝器功能,並在管道中使用%>% wrapper()()

library(leaflet)

wrapper <- function() {
    myfunc <- function(.) {addPolylines(., data = leaflet::atlStorms2005)}
    return(myfunc)
}

# I want this
leaflet() %>% addTiles() %>% addPolylines(data = leaflet::atlStorms2005)

# but I need a wrapper function
leaflet() %>% addTiles() %>% wrapper()()

似乎不需要返回一個函數的函數。 您只需要一個可以調用其他函數的函數。

wrapper <- function(x) {
  x %>% addPolylines(data = leaflet::atlStorms2005)
}

leaflet() %>% addTiles() %>% wrapper()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM