#r #split #sentiment-analysis
#r #разделить #анализ настроений
Вопрос:
При разработке приложения для анализа настроений с использованием R мне нужно разделить результат сопоставленных слов,
Сначала (готово)
pos.matches = match(words, pos.words)
Второй (готово)
words_matched=words[pos.matches]
На втором шаге давайте рассмотрим пример, который вернет метод
happy happy sad
Мой вопрос в том, как разделить результат со вторичного шага на такой:
[1] happy
[2] happy
[3] sad
Прямо сейчас я использую функцию strsplit
strsplit((words[pos.matches])," ")
но он уведомляет меня об ошибке
Предупреждение: ошибка в cat: аргумент 1 (тип ‘list’) не может быть обработан ‘cat’
Комментарии:
1. Я не уверен, является ли это ошибкой или предупреждением (поскольку они оба присутствуют здесь по какой-то причине), но я почти уверен, что вы скрываете здесь какой-то код.
strsplit
не используетcat
функцию. Вы превратили это вwrite
функцию или что-то в этом роде?2. можете ли вы показать вывод
words[pos.matches]
?3. @DavidArenburg вторичный шаг дал мне какой-то список, но не в виде строки (я думаю), поэтому, когда я пытаюсь выполнить strsplit, он выдает мне эту ошибку, это какое-то решение?
4. @cccmir результат из слов [pos.matches] счастлив, счастлив, грустен (пример), но он не в формате строки
5. @hope9 ЧжейуанЛи имел в виду, что нужно написать в вашей консоли r
dput(words[pos.matches])
и поместить результаты в свой пост, чтобы мы все могли использовать его, чтобы помочь вам
Ответ №1:
words_matched = "happy happy sad"
strsplit(words_matched, " ")
Дает:
[[1]]
[1] "happy" "happy" "sad"
Обратите внимание на [[1]], затем на [1] . Здесь у вас есть одноэлементный список с трехэлементным символьным вектором внутри. Если вы попытаетесь выполнить его:
cat(strsplit(words_matched, " "))
вы получаете сообщение об ошибке, которое вы видели: «Аргумент 1 (тип ‘list’) не может быть обработан ‘cat'»
Вы хотите любой из этих:
strsplit(words_matched, " ")[[1]]
unlist(strsplit(words_matched, " "))
Они возвращают только вектор символов из 3 элементов, который можно катализировать.
Кроме того, вывод [1] [2] [3], который вы показали, не соответствует тому, как print() или cat() будут форматировать его вывод. Мне интересно, действительно ли вы хотели list
, а не вектор символов. Если это так, вам нужно перепрыгнуть через еще один обруч:
as.list( unlist(strsplit(words_matched, » «)) )
Который при print()
редактировании дает:
[[1]]
[1] "happy"
[[2]]
[1] "happy"
[[3]]
[1] "sad"