2017-05-04 22 views
2

This question显示如何在降价文件中循环/应用传单对象。我想做类似的事情,但我想添加额外的降价内容。在循环中合并传单和降价

--- 
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))) 
``` 

如果我离开了在createMaps功能cat语句,此代码打印所有三个地图。如果我把cat陈述,我得到降价,但没有地图。任何方式来结合这两种类型的元素?

回答

1

问题是,您的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(),...)