Выделите текст на основе списка в R блестящий
Я хотел бы выделить / раскрасить часть строки на основе списка в R глянцевый. У меня есть следующий код:
library(shiny)
ui <- fluidPage(
mainPanel(
fluidRow(
box(title="text",status="primary", solidHeader = TRUE, align = "left", width = 4,
verbatimTextOutput("text"))))
)
server <- function(input, output) {
output$text <- renderText({
print("ABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRS")
})
}
shinyApp(ui = ui, server = server)
Как я могу покрасить / выделить части строки, используя список:
highlight <- c("GHIJ", "MNOP", "STUV")
Список меняется в зависимости от ввода пользователя.
РЕДАКТИРОВАТЬ: мне удалось выделить определенные части строки, используя следующий код:
library(shiny)
library(magrittr)
library(tableHTML)
ui <- fluidPage(
mainPanel(
fluidRow(
box(title="Sequence",status="primary", solidHeader = TRUE, align = "left", width = 6,
htmlOutput("text")),
tags$style(type="text/css", "#text {word-break: break-all;}")))
)
server <- function(input, output) {
output$text <- renderText({
text2 <- c("ABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRS")
text2 %<>% stringr::str_replace_all(c('MNOPQR' = '<span style="background-color:yellow">MNOPQR</span>'))
print(text2)
})
}
У меня есть большой список строк, которые я хочу выделить, которые изменяются в зависимости от ввода пользователя. Я хочу обернуть функцию str_replace_all в цикл, просматривая все строки в списке.
Что-то вроде этого:
words <- c("ABCD", "MNOP", "GHIJ")
for (word in words){
text2 %<>% stringr::str_replace_all(c('word' = '<span style="background-color:yellow">word</span>'))
}
но я не заставляю его работать.
1 ответ
На мой взгляд, здесь есть несколько шагов. Сначала нужно найти строки, которые нужно выделить, используя grep, затем разделить исходную строку и, наконец, применить HTML-тег, например.
tags$span(style="color:red", x)
для красного цвета.