R ile formüllerde yeniyim ve bazı yinelenen kodları daha kompakt bir şeye dönüştürmek için biraz uğraşıyorum. MrFlick'in yorumunda da belirtildiği gibi, cevap bölümünde bulduğum çalışma çözümünü yayınladım. Bu nedenle, wikispiral.org numaralı belgede görebileceğiniz gibi, farklı kategorileri kullanarak karşılaştırmalı bir wordcloud için çeşitli yazılımlar oluşturmak benim sorunum. Bunun için orijinal veri çerçevesinin alt kümelerini (veri çerçevesinde mevcut olan kategoriler) temel alan bir karakter vektörleri listesi oluşturmam gerekiyor. Aşağıdaki örneğe bakın:R textmining, bir veri kümesinin alt kümeleriyle yapılandırılmış bir yapı oluşturuyor
element qty category1 category2
1 Adams Pearmain 2 Red small
2 Aia Ilu 1 Green big
3 Airlie Red Flesh 4 Red small
4 Akane 3 Green big
5 Åkerö 6 Yellow small
6 Alkmene 2 Orange big
7 Allington Pippin 1 Red small
8 Ambrosia 4 Red big
9 Anna 3 Green small
10 Annurca 6 Red big
11 Antonovka 2 Green small
12 Apollo 1 Yellow big
13 Ariane 4 Green small
14 Arkansas Black 3 Yellow big
15 Arthur Turner 6 Orange big
Şu anda gibi Wordcloud için vektörlerin listemi oluşturma:
## Subsetting two dataframes to category2 values
wordBig <- d[d$category2 == "big",]
wordSmall <- d[d$category2 == "small",]
## Extracting the vectors in the category1 columns
wordSmall <- as.vector(wordSmall$category1)
wordBig <- as.vector(wordBig$category1)
## Building the list for the corpus
wordALL <- list(wordBig, wordSmall) # Without list() it doesn' t work
Ve nihayet:
bu dataframe verirlibrary(wordcloud)
library(tm)
element <- c("Adams Pearmain ", "Aia Ilu ", "Airlie Red Flesh", "Akane ", "Åkerö ", "Alkmene", "Allington Pippin ", "Ambrosia ", "Anna ", "Annurca ", "Antonovka ", "Apollo ", "Ariane ", "Arkansas Black ", "Arthur Turner")
qty <- c(2, 1, 4, 3, 6, 2, 1, 4, 3, 6, 2, 1, 4, 3, 6)
category1 <- c("Red", "Green", "Red", "Green", "Yellow", "Orange", "Red", "Red", "Green", "Red", "Green", "Yellow", "Green", "Yellow", "Orange")
category2 <- c("small", "big", "big", "small", "small", "medium", "medium", "medium", big", "big", "small", "medium", "big", "very big", "medium")
d <- data.frame(element=element, qty=qty, category1=category1, category2=category2)
corpus < - Dergi (VectorSource (wordALL), readerControl = liste (dil = " fr "))
Gerçek hayattaki örneğim wikispiral.org içinde, dinamik bir boyut dizisi vardır - yalnızca" büyük "veya" küçük "kategorileri değil (ve bu kategorilerin bazıları web sitesinin kullanıcıları tarafından tanımlanır, ve oldukça öngörülemez). Sabit kategoriler için bile kod tekrarlı ve çirkinleşiyordu ve bir kategorideki NA'lar varsa ("büyük" kategorisinde veri yok gibi) bir hatadan kaçınmak için her bir boyutun varlığının test edilmesi gerekiyordu. comparative.wordcloud()
.
Benim soru yani: yapabiliyor daha kompakt kodu içinde emsal örnek dönüştürmek için nasıl: 1 - sınıflandırma sütununda kategoriler tespit 2 - karakterinin listesi oluşturabilir vektörleri 3 - Belki do döngülerden kaçınmak ...
BayFlick'in tavsiyesi üzerine cevaplar bölümüne koyduğum bir cevabı zaten buldum.
İsteği [codereview.se] üzerine aittir taşması Stack değil. Sorunuzu belirli bir programlama sorusu üzerine odaklanmak daha iyi olurdu. Başkalarının çözümünüzü incelemesini istemekten ziyade, yapıştırabileceğiniz diğer kişilerin, alternatif çözümlere katılıp katılmadıklarında oy kullanabilecekleri bir yanıttır. – MrFlick
"alt data.frames" in bir listesini oluşturmak için "d $ category2" ikinci argümanı ile 'split 'kullanın ve sonra bu alt kümelerde çalışın. –
Yorumlarınız için teşekkürler, cevaplarımda da görebileceğiniz gibi, çok yardımcı oldu. –