r - при вязании в файле html не отображаются интерактивные листовки - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь нанести пространственные данные на интерактивные карты, используя «mapview» и «purrr». Карты видны при использовании Rstudio в .rmd, но не при вязании html. Этот способ представления данных в rmd поддерживается "ggplot2", поэтому я подумал, что экспорт карт в html будет полезен.

Пример данных:

library(mapview)
library(dplyr)
library(purrr)

df <- data.frame(lon = 1:9,
                 lat = 1:9,
                 id = c(rep(1,5), rep(2,4))) %>% 
      st_as_sf(coords = c("lon", "lat"), crs = 4326)

# split dataframe in multiple datasets (to produce multiple plots for each group of data)
df <- split(df, df$id)

При попытке построить в html с помощью «purrr» и «mapview»:

df %>% map(mapview)

Вывод в html:

enter image description here

Вывод в Rstudio (доступны обе карты): enter image description here

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете использовать htmltools :: tagList (), см .: Как отображать листовые карты в циклах в RMD с помощью knitr

Если вы хотите использовать Tidyverse:

---
title: "R Notebook"
output:
  html_document
---


```{r}
library('tidyverse')
library('sf')
library('mapview')
library('htmltools')

# create data set
df = data.frame(lon = 1:9,
                 lat = 1:9,
                 id = c(rep(1,5), rep(2,4))) %>% 
      st_as_sf(coords = c("lon", "lat"), crs = 4326)

# split dataframe in multiple datasets (to produce multiple plots for each group of data)
df = split(df, df$id)



# create maps
df_maps = df %>% 
  purrr::set_names() %>% 
  map(.x = .,
      .f = mapview) %>% 
  map(.x = ., slot, name = "map")

# add html headers
df_maps =
  imap(.x = df_maps,
       .f = function(x, y) {
        list(h4(paste("Subset:", y)),
             x)
      }) %>%
  flatten()

# for printing the maps
tagList(df_maps)
```
...