Ошибка в seq.default (1, length (tokens), 5000): неправильный вход в аргумент 'by' в R - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь создать матрицу терминов документа (dtm), но столкнулся с приведенной ниже ошибкой.

dtm <- CreateDtm(tokens$text, 
                 stopword_vec = c(stopwords::stopwords("en")),
                 doc_names = tokens$ID, 
                 ngram_window = c(1, 2),lower = TRUE, remove_punctuation = TRUE, remove_numbers = TRUE)

Ошибка:

Ошибка в seq. default (1, length (tokens), 5000): неправильный вход в аргумент 'by'

dput(head(tokens)) дает следующее:

structure(list(Index = c(0, 1, 2, 3, 4, 5), Paper = c("9201001", 
"9201002", "9201003", "9201004", "9201005", "9201006"), `1` = c("combinatorics", 
"inomogeneous", "intersection", "heterotic", "ward", "symmetries"
), `2` = c("modular", "quantum", "theory", "green", "identities", 
"massless"), `3` = c("ii", "symmetries", "integrable", "schwarz", 
"dimensional", "field"), `4` = c("", "phonons", "hierarchies", 
"superstring", "string", "theories"), `5` = c("", "", "topological", 
"super", "theory", ""), `6` = c("", "", "field", "worldsheet", 
"", ""), `7` = c("", "", "theory", "", "", ""), `8` = c("", "", 
"", "", "", ""), `9` = c("", "", "", "", "", ""), `10` = c("", 
"", "", "", "", ""), `11` = c("", "", "", "", "", ""), `12` = c("", 
"", "", "", "", "")), row.names = c(NA, -6L), groups = structure(list(
    Paper = c("9201001", "9201002", "9201003", "9201004", "9201005", 
    "9201006"), .rows = list(1L, 2L, 3L, 4L, 5L, 6L)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"), .drop = FALSE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))

Интересно, что пошло не так? Заранее спасибо.

1 Ответ

0 голосов
/ 12 июля 2020

Вы получаете это, потому что у вас нет столбца с именем text в вашем фрейме данных:

length(tokens$text)
#> [1] 0
#> Warning message:
#> Unknown or uninitialised column: `text`. 

Это означает, когда в рамках своего алгоритма CreatDtm пытается создать последовательность на основе по количеству токенов он вызывает:

seq(1, 0, 5000)
#> Error in seq.default(1, 0, 5000) : wrong sign in 'by' argument

Все ваши столбцы в примере пронумерованы, и на них нужно будет ссылаться с помощью обратных тиков, например:

tokens$`1`

Однако для CreateDtm вы хотели бы передать весь фрейм данных, а не только один столбец:

CreateDtm(tokens)
#> 14 x 25 sparse Matrix of class "dgCMatrix"
#>    [[ suppressing 25 column names ‘combinatorics’, ‘dimensional’, ‘green’ ... ]]
#>                                                        
#> Index . . . . . . . . . . . . . . . . . . . . . . . . .
#> Paper . . . . . . . . . . . . . . . . . . . . . . . . .
#> 1     1 . . 1 . . . 1 . 1 . . . . . . . . . . 1 . . 1 .
#> 2     . . 1 . . 1 . . . . 1 1 . 1 . . . . . . . . . . 1
#> 3     . 1 . . . . 1 . 1 . . . . . 1 . . . . . . . 1 1 .
#> 4     . . . . 1 . . . . . . . 1 . . 1 . 1 1 . . . . . .
#> 5     . . . . . . . . . . . . . . . . 1 . . 1 . . . . 1
#> 6     . . . . . . . . . . . . . . . . . . . . . 1 1 . .
#> 7     . . . . . . . . . . . . . . . . . . . . . . . . 1
#> 8     . . . . . . . . . . . . . . . . . . . . . . . . .
#> 9     . . . . . . . . . . . . . . . . . . . . . . . . .
#> 10    . . . . . . . . . . . . . . . . . . . . . . . . .
#> 11    . . . . . . . . . . . . . . . . . . . . . . . . .
#> 12    . . . . . . . . . . . . . . . . . . . . . . . . .

Очевидно, это только результат для заголовка вашего фрейма данных, а не целого.

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