问:在rmarkdown html中为for循环创建传单地图

前端之家收集整理的这篇文章主要介绍了问:在rmarkdown html中为for循环创建传单地图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在rmarkdown文件中创建带有for循环的传单映射.

这是一个最小的例子:

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

```{r quakes,echo=F}
data(quakes)
library(leaflet)

for (i in c(10:20))
{
leaflet(data = quakes[1:5 & quakes$stations == i,]) %>% addTiles() %>%
  addMarkers(~long,~lat,popup = ~as.character(mag))
}
```

我没有使用此代码获得任何输出.单独运行leaflet命令(并用整数替换i)时,它可以工作.我也试过了print命令,但这也没用.

知道我怎么能这样做吗?

解决方法

你有点复杂了.

您必须通过从唯一的工作站选择经度和纬度来创建传单并在其上应用标记.

但是在这里你要在一个循环中创建传单.并且还在循环中添加了瓷砖,这是主要问题.

现在你可以在循环中创建一个传单和addTiles,并在循环中添加addMarkers,但实际上根本不需要for循环并一次添加所有标记.

首先,按唯一站选择数据集

distinct_by_stations<-distinct(quakes,stations) #dplyr is needed for 'distinct'

使用上面的过滤器数据集作为数据创建传单并添加标记

leaflet(data = distinct_by_stations) %>% addTiles() %>% addMarkers(~long,popup=~as.character(mag))

在rpubs上查看工作.rmd

http://rpubs.com/dhawalkapil/quakesdata

工作R块

```{r quakes,echo=T}
data(quakes)
library(leaflet)
library(dplyr)

distinct_by_stations<-distinct(quakes,stations)
leaflet(data = distinct_by_stations) %>% addTiles() %>% addMarkers(~long,popup=~as.character(mag))
```

使用多个地图

让我们在年份上添加一列.然后我们将不得不使用@NicE解释的htmltools :: tagList.拆分’年’并使用lapply

```{r quakes,echo=T,results='asis'}
data(quakes)
library(leaflet)
library(dplyr)
library(htmltools)
##Add A Random Year Column
quakes$year=sample(2006:2015,length(quakes),replace=TRUE)
createMaps<-function(x){
        distinct_by_stations<-distinct(x,stations)
        lflt<-leaflet(data = distinct_by_stations) %>% addTiles() %>% addMarkers(~long,popup=~as.character(mag))
}

htmltools::tagList(lapply(split(quakes,quakes$year),function(x){createMaps(x)}))
```

请参阅上面相同网址中的更新rpubs.

猜你在找的HTML相关文章