通过for循环以不同的名称存储多个语料库

问题描述 投票:1回答:1

我希望将每个股票行情录包含多个文本文档,并将其存储为单个语料库。我已经读过有关创建“列表中的列表”的信息,但这对我不起作用。例如,“文本挖掘和termdocumentmatrix”给出以下错误:没有适用于'TermDocumentMatrix'的适用方法应用于类“ list的对象。

我可以将所有内容放入for循环中,但这不是我想要的,因为我希望可以灵活地使用主体。

有人可以帮我解决如何有效解决此问题吗?我的代码如下。预先谢谢!

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)
r for-loop text-mining tm corpus
1个回答
0
投票

似乎您已正确完成了所有工作,除了将输入从BigList中删除。 [将返回一个列表(在您的情况下包含一个元素)-您需要使用[[。试试:

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

代替。

https://cran.r-project.org/doc/manuals/R-lang.html#Indexing有更多信息,包括此注释(以防我在上面说的不清楚):

对于列表,通常使用[[选择单个元素,而 [返回所选元素的列表。

© www.soinside.com 2019 - 2024. All rights reserved.