R中for循环和intersect()的问题

时间:2017-12-08 02:03:04

标签: r

我对R比较陌生,目前主要用于文本分析。在下面的代码中,我试图在某些单词中找到重复。

tableinter <- intersect(innsong, Inncorpus[[1]])
inntable <- table(innsong)
repwords <- list()
notrepwords <- list()
for(i in length(tableinter)){
  if(inntable[tableinter[i]] > 1){
    repwords[[i]] <- tableinter[[i]]
    return(repwords)
  } else{
    notrepwords[[i]] <- tableinter[[i]]
  }
}

我的最终目标是从innsonginncorpus[[1]]相交的单词中包含两个列表。一个列表repwords将包含inncorpus[[1]]中与innsong相交且频率> 1的单词。另一个列表是那些在文本中只出现一次的词。

1 个答案:

答案 0 :(得分:0)

分析文档中单词出现的一种更通用的方法是通过文档特征矩阵(或文档术语矩阵)。

我推荐包quanteda

require("quanteda")
require("magrittr")

df_matrix <- c(innsong, Inncorpus[[1]]) %>%
    dfm(tolower = TRUE, stem = FALSE, remove_numbers = TRUE,
        remove_punct = TRUE, remove_symbols = TRUE)

这将生成一个矩阵,其中每一行都是一个文档,每列都是一个不同的单词。每个值表示每个文档中每个单词的出现次数。你将有两排到达。然后,您可以评估矩阵以找到答案。

在我看来,这是一种更通用的方法。如果您愿意,它可以为您提供词干和删除停用词的选项。