Î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
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_filecare 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).
- Folosind calea fișierului încărcat, citește textul din fișier cu funcția
- Folosește variabila reactivă
input_file()ca parametrudataal 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)