Bir metin dosyası yükle (server)
Kullanıcı bir dosya seçtikten sonra, bu dosya Shiny uygulamasını çalıştıran bilgisayara yüklenir ve server içinde kullanılabilir hale gelir.
Bir dosya girdisinin input ID'si "myfile" ise, input$myfile'ın yüklenen dosyaya doğrudan erişim sağlayacağını düşünebilirsin; ancak dosya girdileri böyle çalışmaz. input$myfile, seçilen dosyayla ilgili birkaç meta veriyi içeren bir data.frame döndürür; burada esas dikkat etmen gereken alan datapath'tir. Dosya girdisinin ID'sinin "myfile" olduğunu varsayarsak, input$myfile$datapath dosyanın bulunduğu yol olur.
Yüklenen dosyanın yolunu elde ettikten sonra (örneğin C:\Users\Dean\AppData\Local\Temp\path\to\file.txt), bu yolu dosyayı ihtiyaç duyduğun şekilde okumak için kullanabilirsin. Yüklenen dosya bir CSV ise read.csv() kullanabilir, dosyadaki tüm satırları basitçe okumak istiyorsan readLines()'ı tercih edebilir ya da dosya yolunu kabul eden başka herhangi bir fonksiyonu kullanabilirsin.
Bu egzersiz
Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme
kursunun bir parçasıdırEgzersiz talimatları
Görevin, yüklenen dosyadaki metni kelime bulutu için veri kaynağı olarak kullanmak. Özellikle:
- Yüklenen dosyadaki metni tutacak
input_fileadlı bir reaktif değişken tanımla (satır 19).- Yüklenen dosyanın yolunu kullanarak, dosyadaki metni
readLines()fonksiyonuyla oku (satır 24).
- Yüklenen dosyanın yolunu kullanarak, dosyadaki metni
input_file()reaktif değişkenini kelime bulutu fonksiyonunundataparametresi olarak kullan (satır 29).
Dosya yüklemeyi test etmek için bilgisayarında herhangi bir metin dosyası oluşturup uygulamaya yükleyebilirsin. Alternatif olarak, Martin Luther King Jr.'ın I Have a Dream konuşmasındaki metinle kelime bulutu fonksiyonunu test etmek için bu dosyayı kullanabilirsin (bilgisayarına metin dosyası olarak kaydet).
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
ui <- fluidPage(
h1("Word Cloud"),
sidebarLayout(
sidebarPanel(
textAreaInput("text", "Enter text", rows = 7),
fileInput("file", "Select a file"),
numericInput("num", "Maximum number of words",
value = 100, min = 5),
colourInput("col", "Background color", value = "white")
),
mainPanel(
wordcloud2Output("cloud")
)
)
)
server <- function(input, output) {
# Define a reactive variable named `input_file`
input_file <- ___({
if (is.null(input$file)) {
return("")
}
# Read the text in the uploaded file
readLines(input$___$datapath)
})
output$cloud <- renderWordcloud2({
# Use the reactive variable as the word cloud data source
create_wordcloud(data = ___(), num_words = input$num,
background = input$col)
})
}
shinyApp(ui = ui, server = server)