无法在R中绘制Zipf定律

时间:2015-02-07 09:25:54

标签: r distribution tm qdap

我有一个很大的术语列表及其从文本文件加载的频率,我将其转换为表格:

myTbl = read.table("word_count.txt")  # read text file 

colnames(myTbl)<-c("term", "frequency")
head(myTbl, n = 10)

> head(myTbl, n = 10)
    term frequency
1     de     35945
2      i     34850
3  \xe3n     19936
4      s     15348
5     cu     13722
6     la     13505
7     se     13364
8     pe     13361
9     nu     12693
10     o     11995

我应该添加一个带有单词排名的列,然后根据频率绘制排名,但是我该怎么做?

1 个答案:

答案 0 :(得分:4)

使用tm包会更容易,而不是滚动自己的计算。将myTbl转换为术语文档矩阵(tdm)

library(tm)
tdm <- TermDocumentMatrix(myTbl) # there are many more clean up steps, but I am simplifying 

然后你不仅有Zipf,还有Heaps和plots来显示。

Zipf_plot(tdm) 
Heaps_plot(tdm) # how vocabulary grows as size of text grows

或者,您可以使用qdap包及其排名频率图。以下是小插曲的引用:

  

排名频率图是一种可视化单词排名的方式   与Zipf法律相关的频率,表明a的等级   单词与其频率成反比。 rank_freq_mplot和   rank_freq_plot提供绘制等级和频率的方法   单词(使用rank_freq_mplot通过对变量进行分组绘制)   Rank_freq_mplot使用ggplot2包,而rank_freq_plot   采用基础图形。