#r #for-loop #variables #sentiment-analysis
#r #для цикла #переменные #анализ настроений
Вопрос:
Я пытаюсь сжать этот блок кода:
for (i in 1:nrow(Bernie_Sentiments)) {
nrctoken <- data_frame(text = Bernie_Sentiments$text[i]) %>% unnest_tokens(word, text) %>% anti_join(stop_words) %>% inner_join(get_sentiments("nrc")) %>% count(sentiment) %>% spread(sentiment, n, fill = 0)
nrc_positive = tryCatch(nrctoken$positive, warning = function(x) 0, error = function(x) 0)
nrc_negative = tryCatch(nrctoken$negative, warning = function(x) 0, error = function(x) 0)
nrc_anger = tryCatch(nrctoken$anger, warning = function(x) 0, error = function(x) 0)
nrc_anticipation = tryCatch(nrctoken$anticipation, warning = function(x) 0, error = function(x) 0)
nrc_disgust = tryCatch(nrctoken$disgust, warning = function(x) 0, error = function(x) 0)
nrc_fear = tryCatch(nrctoken$fear, warning = function(x) 0, error = function(x) 0)
nrc_joy = tryCatch(nrctoken$joy, warning = function(x) 0, error = function(x) 0)
nrc_sadness = tryCatch(nrctoken$sadness, warning = function(x) 0, error = function(x) 0)
nrc_surprise = tryCatch(nrctoken$surprise, warning = function(x) 0, error = function(x) 0)
nrc_trust = tryCatch(nrctoken$trust, warning = function(x) 0, error = function(x) 0)
Bernie_Sentiments$nrc_positive[i] <- nrc_positive
Bernie_Sentiments$nrc_negative[i] <- nrc_negative
Bernie_Sentiments$nrc_anger[i] <- nrc_anger
Bernie_Sentiments$nrc_anticipation[i] <- nrc_anticipation
Bernie_Sentiments$nrc_disgust[i] <- nrc_disgust
Bernie_Sentiments$nrc_fear[i] <- nrc_fear
Bernie_Sentiments$nrc_joy[i] <- nrc_joy
Bernie_Sentiments$nrc_sadness[i] <- nrc_sadness
Bernie_Sentiments$nrc_surprise[i] <- nrc_surprise
Bernie_Sentiments$nrc_trust[i] <- nrc_trust
}
И я придумал это:
for (i in 1:nrow(Bernie_Sentiments)) {
nrctoken <- data_frame(text = Bernie_Sentiments$text[i])
%>% unnest_tokens(word, text) %>% anti_join(stop_words)
%>% inner_join(get_sentiments("nrc")) %>%
count(sentiment) %>% spread(sentiment, n, fill = 0)
emotions_list <- c('positive', 'negative', 'anger',
'anticipation', 'disgust', 'fear', 'joy', 'sadness',
'surprise', 'trust')
TmParallelApply(X = emotions_list, FUN = function(x)
{substitute(x, Bernie_Sentiments)[i] =
tryCatch(substitute(x, nrctoken), warning = function(x)
0, error = function(x) 0)}, export = ls(), envir =
environment())
}
Однако я продолжаю получать сообщение об ошибке: Ошибка в checkForRemoteErrors (val): 8 узлов выдали ошибки; первая ошибка: объект типа ‘symbol’ не поддается подстановке. Буду признателен за любые идеи о том, как я могу исправить или улучшить свой код. Спасибо!
Комментарии:
1. Работает ли первый блок кода? Мне интересно о
tryCatch
вызовах, поскольку он обычно выполняется на методах, которые выдают предупреждения / ошибки, а не значения, такие как символы / цифры.2. Также для каждого
r
тега (наведите курсор или щелкните): Используйтеdput()
для данных и укажите все небазисные пакеты сlibrary()
вызовами. В частности, предоставьтеdput
ofBernie_Sentiments
и включитеlibrary
источники дляTmParallelApply
,unnest_tokens
, дажеinner_join
поскольку это не базовые методы R.3. Да, первый блок кода работает нормально. Не могли бы вы, пожалуйста, объяснить, как использовать
dput()
? Было бы это простоdput(Bernie_Sentiments)
?