Хранить несколько корпусов через l oop под разными именами - PullRequest
1 голос
/ 29 мая 2020

У меня есть несколько текстовых документов на тикер, которые я хочу сохранить как отдельный корпус. Я читал о создании "списков в списках", но у меня это не работает. Например, «интеллектуальный анализ текста и termdocumentmatrix» дают следующую ошибку: нет применимого метода для «TermDocumentMatrix», примененного к списку объектов класса .

Я мог бы поместить все в для l oop, но это не то, что я хочу, так как мне нужна некоторая гибкость для игры с корпусом.

Может ли кто-нибудь помочь мне, как я могу эффективно решить эту проблему? Мой код ниже. Спасибо заранее!

Stocks <- list("AAPL", "AMZN", "BIG", "BYD", "CTWS", "EAT", "FB", "GOOG", "GRMC", "HRL", "MGM", "MSFT",
               "NEM", "PKS", "RGLD", "SCCO", "SLP", "TCO", "USGL", "WDFC"
)

BigList <- list()
for (stock in Stocks) {
  filepath <- file.path("C:/Users/......./Stocks10K", stock)
  a <- Corpus(DirSource(filepath))
  a <- tm_map(a, removePunctuation)
  a <- tm_map(a, removeNumbers)
  a <- tm_map(a, tolower)
  a <- tm_map(a, removeWords, stopwords("en"))
  a <- tm_map(a, stripWhitespace)
  name <- paste('Data:', stock, sep='')
  tmp <- list(Text = a)
  BigList[name] <- tmp
  rm(tmp, stock, name, filepath, a)
}

#Create Term Document Matrix and create Matrix
tdm <- TermDocumentMatrix(BigList['Data:AAPL'])
m <- as.matrix(tdm)

1 Ответ

0 голосов
/ 29 мая 2020

Похоже, вы все сделали правильно, кроме получения записи из BigList. [ вернет список (содержащий один элемент в вашем случае) - вместо этого вам нужно [[. Попробуйте вместо этого:

tdm <- TermDocumentMatrix(BigList[['Data:AAPL']])

.

https://cran.r-project.org/doc/manuals/R-lang.html#Indexing содержит дополнительную информацию, включая это примечание (на случай, если то, что я сказал выше, не ясно):

Для списков обычно используется [[для выбора любого отдельного элемента, тогда как [возвращает список выбранных элементов.

...