Как разделить список или вектор в r?

#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"