#r #word-cloud
#r #word-облако
Вопрос:
В настоящее время я использую wordle для многих вычурных применений слова cloud. Я думаю, что облако слов R, потенциально, обладает лучшим контролем.
1) Как сохранить заглавную букву слова в word cloud? [РЕШЕНО]
2) Как сохранить два слова как один фрагмент в wordcloud? (wordle использует для этого оператор ~, word cloud в R просто выводит ~ как есть) [Например, там, где есть ~ между «to» и «be», я бы хотел пробел в word cloud]
require(wordcloud)
y<-c("the", "the", "the", "tree", "tree", "tree", "tree", "tree",
"tree", "tree", "tree", "tree", "tree", "Wants", "Wants", "Wants",
"Wants", "Wants", "Wants", "Wants", "Wants", "Wants", "Wants",
"Wants", "Wants", "to~be", "to~be", "to~be", "to~be", "to~be",
"to~be", "to~be", "to~be", "to~be", "to~be", "to~be", "to~be",
"to~be", "to~be", "to~be", "to~be", "to~be", "to~be", "to~be",
"to~be", "when", "when", "when", "when", "when", "familiar", "familiar",
"familiar", "familiar", "familiar", "familiar", "familiar", "familiar",
"familiar", "familiar", "familiar", "familiar", "familiar", "familiar",
"familiar", "familiar", "familiar", "familiar", "familiar", "familiar",
"leggings", "leggings", "leggings", "leggings", "leggings", "leggings",
"leggings", "leggings", "leggings", "leggings")
wordcloud(names(table(y)), table(y))
Комментарии:
1. Ваш исходный код был воспроизводимым, и я основал свой ответ на этом. Ваша правка больше не воспроизводима, и мой ответ больше не имеет смысла.
2. @Andrie Извините, некоторые из них были пользовательскими функциями, которые я удалил для дальнейшего использования
Ответ №1:
Вы задали два вопроса:
- Вы можете управлять заглавными буквами (или нет), указав управляющий аргумент для
TermDocumentMatrix
- Без сомнения, где-то есть аргумент для управления
~
, но вот простое решение: используйтеgsub
для изменения~
на пробел на шаге непосредственно перед построением графика.
Некоторый код:
corpus <- Corpus(VectorSource(y))
tdm <- TermDocumentMatrix(corpus, control=list(tolower=FALSE)) ## Edit 1
m <- as.matrix(tdm)
v <- sort(rowSums(m), decreasing = TRUE)
d <- data.frame(word = names(v), freq = v)
d$word <- gsub("~", " ", d$word) ## Edit 2
wordcloud(d$word, d$freq)
Комментарии:
1. Это было простое решение, я пытался подойти к нему, используя пакет tm, который был ненужным. Спасибо.