gpt4 book ai didi

r - 问 : Create leaflet map in for loop in rmarkdown html

转载 作者:行者123 更新时间:2023-12-02 08:56:21 34 4
gpt4 key购买 nike

我正在尝试在 rmarkdown 文件中创建带有 for 循环的传单 map 。

这是一个最小的例子:

---
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 替换为整数)时,它可以工作。我也尝试了打印命令,但也不起作用。

知道我该怎么做吗?

最佳答案

你把事情弄复杂了一点。

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

但是您在这里循环创建传单。并且还在循环中添加图 block ,这是主要问题。

现在您可以创建传单并在循环外添加 Tiles 并在循环中添加标记,但您实际上根本不需要 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 上查看工作 .rmd

http://rpubs.com/dhawalkapil/quakesdata

工作 R block

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

具有多个 map

让我们添加一个关于年份的列。然后我们将不得不使用 htmltools::tagList 正如 @NicE 所解释的。按“年份”拆分并使用 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,~lat,popup=~as.character(mag))
}

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

请参阅上面同一网址中的更新 rpub。

关于r - 问 : Create leaflet map in for loop in rmarkdown html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35431926/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com