ÎncepețiÎncepe gratuit

Încarcă un fișier text (server)

După ce utilizatorul selectează un fișier, acesta este încărcat pe computerul care rulează aplicația Shiny și devine disponibil în server.

Dacă ID-ul unui input de tip fișier este „myfile", ai putea presupune că input$myfile îți oferă acces direct la fișierul încărcat – dar nu așa funcționează, de fapt, inputurile de tip fișier. input$myfile returnează un data.frame cu câteva informații despre fișierul selectat, iar cea mai importantă dintre acestea este datapath. Presupunând că ID-ul inputului este „myfile", input$myfile$datapath va fi calea unde se află fișierul.

Odată ce ai calea fișierului încărcat (de exemplu, C:\Users\Dean\AppData\Local\Temp\path\to\file.txt), o poți folosi pentru a citi fișierul în orice mod ai nevoie. Poți utiliza read.csv() dacă fișierul încărcat este de tip CSV, readLines() dacă vrei pur și simplu să citești toate rândurile din fișier, sau orice altă funcție care acceptă o cale de fișier.

Acest exercițiu face parte din cursul

Studii de caz: Construirea aplicațiilor web cu Shiny în R

Vezi cursul

Instrucțiuni pentru exercițiu

Sarcina ta este să folosești textul din fișierul încărcat ca sursă de date pentru word cloud. Mai concret:

  • Definește o variabilă reactivă numită input_file care va stoca textul din fișierul încărcat (linia 19).
    • Folosind calea fișierului încărcat, citește textul din fișier cu funcția readLines() (linia 24).
  • Folosește variabila reactivă input_file() ca parametru data al funcției word cloud (linia 29).

Pentru a testa încărcarea fișierului, poți crea orice fișier text pe computerul tău și îl poți încărca în aplicație. Alternativ, poți folosi acest fișier (salvează-l ca fișier text pe computerul tău) pentru a testa funcția word cloud cu textul discursului I Have a Dream al lui Martin Luther King Jr.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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)
Editează și rulează codul