Пробелы в wordcloud

#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:

Вы задали два вопроса:

  1. Вы можете управлять заглавными буквами (или нет), указав управляющий аргумент для TermDocumentMatrix
  2. Без сомнения, где-то есть аргумент для управления ~ , но вот простое решение: используйте 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, который был ненужным. Спасибо.