Как я могу избежать этой ошибки Shiny uiOutput? - PullRequest
0 голосов
/ 27 февраля 2020

Я создаю приложение Shiny, которое отображает текст с условной подсветкой, чтобы показать, как обычные словари анализа настроений будут оценивать этот текст. Приложение работает, когда я использую простой пример в качестве входной строки, но оно выдает «Ошибка: текст должен быть записан в виде символа длиной в одну единицу», когда я пытаюсь использовать вместо этого более длинные очищенные строки. В обоих случаях входные данные для моего процесса аннотирования текста представляют собой символьный вектор длины один, поэтому я не понимаю, почему он не работает в последней ситуации или как его подогнать.

Вот воспроизводимый пример. Это работает:

library(shiny)
library(tidyverse)
library(tidytext)
library(rvest)

nrc_sentiments <- get_sentiments("nrc") %>%
    filter(sentiment == "negative" | sentiment == "positive") %>%
    mutate(color = recode(sentiment, positive = "Aqua", negative = "Yellow"))

example.text <- "We laughed, we cried, we sang, we dreamt of happier days to come and cursed the ones who abandoned us. I hate Mondays. I like beer."

ui <- mainPanel(fluidRow(uiOutput("thetextoutput")))

server <- function(input, output){

    output$thetextoutput <- renderUI({

        bag_of_words <- strsplit(example.text, " ")[[1]]

        lapply(bag_of_words, function(x) {

             col <- "White"

             if (tolower(x) %in% nrc_sentiments$word) {

                 col <- nrc_sentiments$color[which(nrc_sentiments$word == x)]

             }

             tags$span(style = paste("background-color:", col), x)

        })  

    })

}

shinyApp(ui, server)

Если, однако, я вместо этого использую следующую строку кода для генерации входной строки, а затем запускаю приложение с тем же ui и server кодом, как указано выше, я получаю вышеупомянутое «Ошибка: Текст, который должен быть написан, должен быть вектором длины один символ».

example.text <- read_html("https://www.usconstitution.net/const.txt") %>% html_text()

Есть идеи, почему эта строка ломает приложение, а другая - нет? Я попробовал некоторые простые вещи, такие как удаление черточек и возврат каретки из строки перед обработкой, но это не имело никакого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...