Функция карты Purrr работает в консоли, но не работает в блестящем приложении - PullRequest
0 голосов
/ 16 января 2019

У меня блестящее приложение, которое просматривает анализ настроений в новостных статьях. В рамках этого я использую функции sentimentr get_sentences() и sentiment(). Когда я запускаю этот код в консоли, он работает нормально, но когда я пытаюсь запустить его через блеск, я получаю ошибку Error in mutate_impl: Evaluation error: unused argument (.x)

Соответствующий код:

ui <- fluidPage(
  useShinyjs(),
  sidebarLayout(
    sidebarPanel(
      ...
    mainPanel(
      tabsetPanel(type = "tab",
        ...
        tabPanel("Sentiment", 
           selectInput(inputId = "sourceSelect", label = "Media Source", sources$title),
           plotOutput("sentiment"),
         )
      )
    )
  )
)

server <- function(input, output) {

  ...

  output$sentiment <- renderPlot(
    sentiment()
  )
  sentiment <-eventReactive(input$sourceSelect, {
    max_min = getMinMax(input)
    min = max_min[1]
    max = max_min[2]
    news1 <- news %>%
      filter(isDuplicate == "FALSE") %>%
      filter(date < max) %>%
      filter(date > min) %>%
      mutate(id = seq(1, nrow(.), 1))  %>%
      mutate(selectedSource = str_detect(title, input$sourceSelect)) %>%
      select(date, body, source, title, id, selectedSource)
    news_sentiment <- news1 %>%
      mutate(sentences = map(body, ~(get_sentences(.x))), (sentiment = map(sentences, ~(sentiment(.x)))))
    ...
})
...

}


shinyApp(ui = ui, server = server)

С ошибкой в ​​строке mutate(sentences = map(body, ~(get_sentences(.x))), (sentiment = map(sentences, ~(sentiment(.x))))).

Когда я запускаю это через консоль, он не выдает ошибку и работает отлично, создавая фрейм данных со столбцом sentences и столбцом sentiment с соответствующими списками в них (правильный вывод из sentimentr функции). Я проверил, чтобы увидеть, что кадр, передаваемый в эту трубу, одинаков как в консольной, так и в блестящей версиях. У меня есть подозрение, что есть что-то связанное с вызовом map, использующим (.x), которое может не очень хорошо играть с блестящим.

1 Ответ

0 голосов
/ 17 января 2019

Я обнаружил ошибку, она была вызвана sentiment, а также пытался вызвать sentiment из библиотеки sentimentr. После того, как я переименовал все это, чтобы оно стало отличным, это сработало.

...