Unnest список строк в одну строку - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть фрейм данных со списком строк в одном столбце.Я пытаюсь использовать unnest_tokens для этого столбца, чтобы иметь один токен на строку, но не могу сделать это, когда строки находятся в списке.

Фрейм данных выглядит следующим образом:

> dat
 department instructor_gender                                            comments
1        BME                 F is amazing and you will love her!, Prof. is so nice

Я пытался удалить, используя

dat.word <- dat %>%
  unnest_tokens(word, unlist(comments))

, но получил:

Error in check_input(x) : 
  Input must be a character vector of any length or a list of character
  vectors, each of which has a length of 1.

Как я могу удалить этот список строк, чтобы иметь одно слово в строке?

Редактировать:

> dput(dat)
structure(list(department = "BME", instructor_gender = "F", comments = list(
    c("is amazing and you will love her!", "Prof. is so nice"
    ))), class = "data.frame", row.names = c(NA, -1L))

Редактировать 2: желаемый выход

> output
     word department instructor_gender
1      is        BME                 F
2 amazing        BME                 F
3     and        BME                 F
4     you        BME                 F

1 Ответ

0 голосов
/ 02 декабря 2018

Просто используйте tidyr::unnest перед:

df <- structure(list(department = "BME", instructor_gender = "F", comments = list(
  c("is amazing and you will love her!", "Prof. is so nice"
  ))), class = "data.frame", row.names = c(NA, -1L))

library(tidytext)
library(tidyverse)
df %>% unnest %>% unnest_tokens(word, comments)
#     department instructor_gender    word
# 1          BME                 F      is
# 1.1        BME                 F amazing
# 1.2        BME                 F     and
# 1.3        BME                 F     you
# 1.4        BME                 F    will
# 1.5        BME                 F    love
# 1.6        BME                 F     her
# 2          BME                 F    prof
# 2.1        BME                 F      is
# 2.2        BME                 F      so
# 2.3        BME                 F    nice

Вы ошиблись:

Ввод должен быть символьным вектором любой длины или списком символьных векторов, каждый изкоторый имеет длину 1

Вы передали ему список из одного символьного вектора длины 2.

По сути, вы можете передать ему строку или вектор / список, содержащий только строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...