我正在尝试使用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
)时,它可以工作。我也尝试了打印命令,但这也没有用。
知道我怎么能这样做吗?
答案 0 :(得分:6)
你有点复杂了。
请注意,您必须通过从唯一电台选择经度和纬度来创建传单并在其上应用标记。
但是在这里你要在循环中创建传单。并且还在循环中添加了瓦片,这是主要问题。
现在你可以在循环中创建一个传单和addTiles,并在循环中添加addMarkers,但实际上根本不需要for循环并一次性添加所有标记。
distinct_by_stations<-distinct(quakes,stations) #dplyr is needed for 'distinct'
leaflet(data = distinct_by_stations) %>% addTiles() %>% addMarkers(~long,~lat,popup=~as.character(mag))
请参阅rpubs
中的工作.rmdhttp://rpubs.com/dhawalkapil/quakesdata
工作R Chunk
```{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))
```
让我们在几年内添加一栏。然后我们将不得不使用{@ 1}},如@NicE所解释的那样。拆分&#39;年&#39;并使用htmltools::tagList
lapply
请参阅上面相同网址中的更新rpub。
答案 1 :(得分:4)
您可以使用tagList
中的htmltools
:
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)
它将列表作为参数,因此我将for
循环更改为lapply
。