2013-11-25 90 views
2

我在R中为2首歌曲制作了一个词语云。现在,在显示项目的tdm中,我获得了歌曲1和歌曲2的单词频率。我也能够完美地打印单词云。我的问题是我不想在tdm中频率小于2的词。我该怎么做。从R中的文字云中删除特定单词

我写的代码,并得到此输出:

tdm=TermDocumentMatrix(corpus) 

> tdm=as.matrix(tdm) 
> 
> tdm 
> 

song 1 song 2 
act     0 2 
action    0 2 
actions    0 1 
activity    5 4 

我只希望它发生的比这两个歌曲再次字活动。 我的意思是我想删除的话,行为,行动,行动。我怎样才能做到这一点 ?

+0

[卸下从词云词R]的可能重复(http://stackoverflow.com/questions/20111432/removing-words -from-word-cloud-in-r) –

+0

不,它不是完全相同的。 –

+1

您使用哪个软件包?它是'tm'包吗?如果您编写的代码不是太长,可以考虑使用小数据集将其添加到您的文章中,以使您的示例具有可再现性。 –

回答

4

你没有提供数据的一些这样的事情应该工作:

data("crude") 
tdm <- TermDocumentMatrix(crude) 

x <- as.matrix(tdm)[, 1:2] 
x[rowSums(apply(x, 2, ">", 1)) == 2, ] 

说明:该生产线x <- as.matrix(tdm)[, 1:2]刚开2列像你的数据,因此不会做任何事情,但要使看起来数据所需像你一样,因为你没有提供任何。这条线apply(x, 2, ">", 1)说给我逻辑值的语句是这个大于1.然后我把它与rowSums(逻辑值为TRUE = 1和FALSE = 0)包装。值等于2(我以前有> 1,但这是马虎)是您正在寻找的条件。我使用这个输出x[GRAB_THE_ROWS, ]的逻辑索引。可以撕裂每个步骤和运行自己的代码所看到下面:

(step_1 <- apply(x, 2, ">", 1)) 
(step_2 <- rowSums(step_1)) 
(step_3 <- step_2 == 2) 
x[step_3, ] 
+0

它的工作,但可以请你解释这两行,我无法得到它 –