给定三个 TermDocumentMatrix、text1、text2 和 text3,我想将它们中的每一个的词频计算到一个数据框中并将所有数据框 rbind。三个是示例 - 我实际上有数百个,所以我需要对此进行功能化。

计算一个 TDM 的词频很容易:

apply(x, 1, sum)

或者
rowSums(as.matrix(x))

我想列出一个 TDM 列表:
tdm_list <- Filter(function(x) is(x, "TermDocumentMatrix"), mget(ls()))

并为每个计算词频并将其放入数据框中:
data.frame(lapply(tdm_list, sum)) # this is wrong. it simply sums frequency of all words instead of frequency by each word.

然后将其全部绑定(bind):
do.call(rbind, df_list)

我不知道如何在 TDM 上使用 lapply 来计算词频。

添加示例数据以进行操作:
require(tm)
text1 <- c("apple" , "love", "crazy", "peaches", "cool", "coke", "batman", "joker")
text2 <- c("omg", "#rstats" , "crazy", "cool", "bananas", "functions", "apple")
text3 <- c("Playing", "rstats", "football", "data", "coke", "caffeine", "peaches", "cool")

tdm1 <- TermDocumentMatrix(Corpus(VectorSource(text1)))
tdm2 <- TermDocumentMatrix(Corpus(VectorSource(text2)))
tdm3 <- TermDocumentMatrix(Corpus(VectorSource(text3)))

最佳答案

好的,我想我有它,这实际上可能会帮助那些想做同样事情的人。最后很简单。

combineddf <- do.call(rbind, lapply(tdm_list, function (x) {
 data.frame(apply(x, 1, sum))
}))

上面需要一个 TermDocumentMatrices 列表,并在数据帧中给出所有它们的字数并绑定(bind)所有内容。

关于r - 在术语文档矩阵上使用 lapply 计算词频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29131261/

10-12 19:50