Q:在rmarkdown html中为循环创建传单映射

Q:在rmarkdown html中为循环创建传单映射,r,leaflet,r-markdown,R,Leaflet,R Markdown,我正在尝试在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() %>% ad

我正在尝试在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))
}
```
我没有得到这个代码的任何输出。单独运行传单命令(并将
i
替换为整数)时,该命令有效。我还尝试了print命令,但也没有成功


你知道我该怎么做吗

您可以使用
htmltools
中的
tagList

library(htmltools)
maps <- lapply(c(unique(quakes$stations)),function(x){
    leaflet(data = quakes[1:5 & quakes$stations == x,]) %>% addTiles() %>%
  addMarkers(~long, ~lat, popup = ~as.character(mag))    
})

tagList(maps)
库(htmltools)
映射%addTiles()%%>%
addMarkers(~long、~lat、popup=~as.character(mag))
})
标记列表(地图)

它以列表作为参数,因此我将
for
循环更改为
lappy

,您将它复杂了一点

请参见,您必须创建一个传单,并通过从独特的站点选择经度和纬度,在传单顶部应用标记

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

现在,您可以创建一个传单,在循环外添加瓷砖,在循环中添加标记,但实际上根本不需要for循环,而是一次添加所有标记

首先,按唯一的桩号选择数据集 请参阅rpubs的working.rmd

工作组块

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

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

请参见上面同一url中的更新rpubs。

这更有意义,我认为OP希望在循环中创建多个映射。谢谢:D..我发现..我们都犯了一个基本错误,即使用或其他语言在循环中初始化新对象..嗯,我想在循环中创建传单,因为我想显示多个传单。在我使用的原始数据集中,有来自不同年份的数据,我想为每年创建一份传单。
传单
是一个单一的
地图
小部件。您确定要为您的
n
唯一站点创建
n
地图,并且在每个地图上,只有该唯一站点数据集在此有一列,其中包含2006-2015年的年份。我想为每一年绘制一张地图,所以我想在2006-2015年间循环,创建每一年的子集,并在传单中展示。这更清楚吗?看来这个例子选得不好,对此我很抱歉。我找不到更好的数据集。
leaflet(data = distinct_by_stations) %>% addTiles() %>% addMarkers(~long,~lat,popup=~as.character(mag))
```{r quakes, echo=T}
data(quakes)
library(leaflet)
library(dplyr)

distinct_by_stations<-distinct(quakes,stations)
leaflet(data = distinct_by_stations) %>% addTiles() %>% addMarkers(~long,~lat,popup=~as.character(mag))
```
```{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,~lat,popup=~as.character(mag))
}

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