我在R中为2首歌创作了一个词云。现在在我显示项目的tdm中,我得到了歌曲1和歌曲2的单词频率。我也能够完美地打印单词云。我的问题是我不希望频率小于2的tdm中的单词。我该怎么做。
我写了代码并得到了这个输出:
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 :(得分: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, ]