В настоящее время я использую tidytext в R для анализа тональности. Я использую код, очень похожий на тот, что указан в виньетке. Это приведенный пример: https://cran.r-project.org/web/packages/tidytext/vignettes/tidytext.html
library(tidyr)
bing <- get_sentiments("bing")
janeaustensentiment <- tidy_books %>%
inner_join(bing) %>%
count(book, index = line %/% 80, sentiment) %>%
spread(sentiment, n, fill = 0) %>%
mutate(sentiment = positive - negative)
Я адаптировал это для использования на довольно коротких блоках текста, используя тот же самый inner_join%>% spread%>% mutate прогрессия. Проблема в том, что у меня есть по крайней мере один блок текста, который вызывает у меня проблемы. Я думаю, это потому, что в нем вообще нет негативных настроений. Это сообщение об ошибке:
x object 'negative' not found
Input 'sentiment' is 'positive - negative'
Я думаю, что должен быть способ обойти это - создать переменную, если она не существует, - но я не могу заставить ее работать. Я думаю о чем-то вроде:
mutate(negative = 0) ifelse(exists())
Но я не могу понять, как это будет работать. Кто-нибудь знает, как создать новую переменную, если она не существует, но не создать ее, если она есть? Или, альтернативно, если есть решение этой проблемы в самом tidytext.
EDIT 17 июня: Я только что проверил, что происходит после «распространения», и действительно, нет «отрицательной» переменной / столбца. Поэтому возможно, что если я смогу создать новую переменную - если и только если она еще не существует - со значениями «0», я смогу продолжить.