我用 R 制作了 2 首歌曲的词云。现在,在 tdm 中,当我显示项目时,我得到了歌曲 1 和歌曲 2 的单词频率。我还能够完美打印词云。我的问题是我不想在 tdm 中出现频率小于 2 的单词。我该怎么做。
我编写了代码并得到了以下输出:
tdm=TermDocumentMatrix(corpus)
> tdm=as.matrix(tdm)
>
> tdm
>
song 1 song 2
act 0 2
action 0 2
actions 0 1
activity 5 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]
只是获得像您的数据一样的两列,因此它不会执行任何操作,但需要制作看起来像您的数据的数据,因为您没有提供任何数据。此行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, ]
关于从R中的词云中删除特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185170/