BaşlayınÜcretsiz Başlayın

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ır
Kursu Görüntüle

Egzersiz talimatları

Görevin, yüklenen dosyadaki metni kelime bulutu için veri kaynağı olarak kullanmak. Özellikle:

  • Yüklenen dosyadaki metni tutacak input_file adlı bir reaktif değişken tanımla (satır 19).
    • Yüklenen dosyanın yolunu kullanarak, dosyadaki metni readLines() fonksiyonuyla oku (satır 24).
  • input_file() reaktif değişkenini kelime bulutu fonksiyonunun data parametresi 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)
Kodu Düzenle ve Çalıştır