在R中创建文档术语矩阵

时间:2015-03-18 09:28:12

标签: r loops matrix tm term-document-matrix

我需要为自己,我的推特粉丝及其粉丝创建一个documenttermmatrix。

我们需要在不使用tm包的情况下创建它。

目前,我们有以下变量:

列表l :包含所有关注者'追随者,每个粉丝(包括我自己和我自己的粉丝)存储

lunique1 :列表l的不公开和排序版本,它包含所有关注者'追随者

矩阵:我们使用以下维度创建的矩阵:

matrix <- matrix(, nrow=length(followers)+1, ncol = length(lunique1))

关注者:包含所有关注者的列表。 (nrow中的加号=长度(追随者)+1需要将自己纳入维度

这是我创建documentTermMatrix的代码(一个只包含零值和一个值的矩阵,以显示谁链接到谁)

    for(x in 1 : length(followers)+1)
{
  for(y in 1:length(l[x]))
  {
    for(z in lunique1)
    {

      if(lunique1[z] == l[[x]][y]) 
      {
        matrix[y][z] = 1
      }
      else
        matrix[y][z] = 0

    }}}

我在R中没有(但是)经验不足,但这段代码需要在今晚之前完成。 我希望你们可以帮助我,因为我真的没有想法:(

提前致谢

3 个答案:

答案 0 :(得分:0)

使用R-package tm,您可以选择创建DocumentTermMatrix

这种方法应该比你的循环结构更方便。

答案 1 :(得分:0)

有一种方法可以创建没有tm包的文档术语矩阵,下面这个链接有一个过程。您可以使用类似的方法 This is the link

答案 2 :(得分:0)

我们用以下代码解决了这个问题

 lunique <- unique(unlist(l))
lunique1 <- sort(lunique)
matrix <- matrix(, nrow=length(followers)+1, ncol = length(lunique))
n = 1
m = 1
for(n in 1:length(l))
{
for(m in 1:length(l[[n]]))
{
h <- grep(l[[n]][m], lunique1)
if (length(h>0))
{
matrix[n,h]=1
} else {
matrix[n,h]=0
}
h <- c()
} 
}
matrix <- replace(matrix, is.na(matrix), 0)
adjacency <- t(matrix)%*%matrix