Проектирование текста при наведении на листовки с HTML - как вставить разрыв для каждой запятой - PullRequest
0 голосов
/ 19 сентября 2018

Я использую листовку для отображения наблюдений.Я также использую htmltools для форматирования текста при наведении, который показывает переменные каждого наблюдения.

Проблема в том, что мне нужна переменная hobbies , которая содержит много строк для отображения в каждой строке.каждый хобби отделяется запятой.

Установка и загрузка необходимых пакетов:

install.packages("leaflet")
library(leaflet)
install.packages("htmltools")
library(htmltools)

Создание фиктивных наблюдений:

name <- c("john", "mary")
age <- c(20, 29)
gender <- c("male", "female")
hobbies <- c("fishing, football, video games", "painting, skiing, body pump, data science")
lat <- c(-12.80103, -12.37845)
long <- c(130.9558, 130.8770)

df <- as.data.frame(cbind(name, age, gender, hobbies, lat, long))

Создание картыиспользуя листовку:

# Designing hover text with HTML
# lapply here necessary - my real data has much more than 2 rows#
labs <- lapply(seq(nrow(df)), function(i) {
  paste0( '<p>', "Name : ", df[i, "name"], '<p></p>', 
          "Age : ", df[i, "age"], ', ', 
          "Gender : ", df[i, "gender"],'</p><p>',
          "Hobbies : ", df[i, "hobbies"], ','
  )
})

leaflet(df) %>% 
  addProviderTiles("Esri.WorldImagery") %>% 
  addCircleMarkers(lng = ~ long, 
                   lat= ~ lat, 
                   label = lapply(labs, HTML),
                   clusterOptions = markerClusterOptions()
                   ) 

Я получаю следующий вывод:

my_ouput

Я не знаком с синтаксисом HTML.Я не могу понять, как добавить разрывы
для каждого хобби, чтобы показать на отдельной строке с вкладкой, как показано ниже:

Name : mary
Age : 29, Gender : female
Hobbies : painting
          skiing
          body pump
          data science

Любая помощь будет большой спасибо =)

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете использовать gsub в векторе hobbies, чтобы заменить каждую запятую запятой, за которой следует разрыв строки:

hobbies <- c("fishing, football, video games", "painting, skiing, body pump, data science") %>%
  gsub(",", ",<br>", .)

Затем создайте свой фрейм данных и сгенерируйте метки как обычно.

Если вы хотите, чтобы список увлечений был выровнен друг с другом, вы можете просто вставить некоторые пробельные символы html после разрыва строки.Я обнаружил, что четыре &emsp; + один &ensp; заполнили нужное количество места.

hobbies <- c("fishing, football, video games", "painting, skiing, body pump, data science") %>%
  gsub(",", ",<br>&emsp;&emsp;&emsp;&emsp;&ensp;", .)

Наконец, обратите внимание, что для запуска вашего примера мне пришлось изменить df <- as.data.frame(cbind(name, age, gender, hobbies, lat, long)) на df <- data.frame(name, age, gender, hobbies, lat, long) потому что код, который вы предоставили, преобразовывал ваши координаты в факторы, из-за которых листовка выдавала ошибку.Я предполагаю, что это просто ошибка в том, как вы сложили этот пример, а не в реальных данных.

...