3

这个问题展示了如何在降价文件中循环/应用传单对象。我想做类似的事情,但我想添加额外的降价内容。

---
title: "Test"
output: html_document
---


```{r setup, echo=T,results='asis'}
library(leaflet)
library(dplyr)  ### !!! uses development version with tidyeval !!!
library(htmltools)

##Add A Random Year Column
data(quakes)
quakes <- tbl_df(quakes) %>%
  mutate(year = sample(2008:2010, n(), replace=TRUE))
```

```{r maps, echo=T,results='asis'}
createMaps <- function(year){
  cat(paste("###", year, "\n"))
  leaflet(quakes %>% filter(year == !!year)) %>% 
    addTiles() %>% 
    addMarkers(
      lng = ~long,  
      lat = ~lat, 
      popup = ~as.character(mag))
  cat("\n\n")
}

htmltools::tagList(lapply(as.list(2008:2010), function(x) createMaps(x) ))
```

如果我省略函数cat中的语句createMaps,此代码将打印所有三个映射。如果我输入cat语句,我会得到降价,但没有地图。有什么方法可以结合这两种类型的元素?

4

1 回答 1

2

问题是,cat在 lapply 返回其结果列表之前,您的语句正在被评估。

删除cat语句,将您的createMaps功能更改为

createMaps <- function(year){
  mymap <- leaflet(quakes %>% filter(year == !!year)) %>% 
    addTiles() %>% 
    addMarkers(
      lng = ~long,  
      lat = ~lat, 
      popup = ~as.character(mag))
  return(list(tags$h1(year), mymap))
}

并更改tags$h1()为您想要的任何大小的标题(tags$h2(),...)

于 2017-05-05T07:23:58.563 回答