использование TmParallelApply в цикле для создания переменных

#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 of Bernie_Sentiments и включите library источники для TmParallelApply , unnest_tokens , даже inner_join поскольку это не базовые методы R.

3. Да, первый блок кода работает нормально. Не могли бы вы, пожалуйста, объяснить, как использовать dput() ? Было бы это просто dput(Bernie_Sentiments) ?