Unggah berkas teks (server)
Setelah pengguna memilih sebuah berkas, berkas tersebut akan diunggah ke komputer yang menjalankan aplikasi Shiny, dan menjadi tersedia di server.
Jika ID input dari file input adalah "myfile", Anda mungkin menduga input$myfile memberi akses langsung ke berkas yang diunggah, namun file input tidak bekerja seperti itu. input$myfile akan mengembalikan sebuah data.frame yang memuat beberapa metadata tentang berkas yang dipilih, dengan bagian terpenting adalah datapath. Dengan asumsi ID file input adalah "myfile", input$myfile$datapath akan berisi path lokasi berkas tersebut.
Setelah memperoleh path berkas yang diunggah (misalnya C:\Users\Dean\AppData\Local\Temp\path\to\file.txt), path ini dapat digunakan untuk membaca berkas sesuai kebutuhan Anda. Anda dapat menggunakan read.csv() jika berkas yang diunggah adalah berkas CSV, atau readLines() jika Anda hanya ingin membaca seluruh baris dalam berkas, atau fungsi lain mana pun yang menerima path berkas.
Latihan ini adalah bagian dari kursus
Studi Kasus: Membangun Aplikasi Web dengan Shiny di R
Petunjuk latihan
Tugas Anda adalah menggunakan teks dari berkas yang diunggah sebagai sumber data untuk word cloud. Secara khusus:
- Definisikan variabel reaktif bernama
input_fileyang akan menampung teks dari berkas yang diunggah (baris 19).- Dengan menggunakan path berkas yang diunggah, baca teks dalam berkas tersebut dengan fungsi
readLines()(baris 24).
- Dengan menggunakan path berkas yang diunggah, baca teks dalam berkas tersebut dengan fungsi
- Gunakan variabel reaktif
input_file()sebagai parameterdatapada fungsi word cloud (baris 29).
Untuk menguji unggah berkas, Anda dapat membuat berkas teks apa pun di komputer Anda dan mengunggahnya ke aplikasi. Alternatifnya, Anda dapat menggunakan berkas ini (simpan sebagai berkas teks di komputer Anda) untuk menguji fungsi word cloud dengan teks dari pidato I Have a Dream karya Martin Luther King Jr.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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)