Cara Membangun Aplikasi Web Interaktif dengan Shiny di R

Cara Membangun Aplikasi Web Interaktif Dengan Shiny Di R



Berkat kerangka R Shiny, bundel dari RStudio, membuat aplikasi web dinamis dengan R relatif mudah. Manfaat Shiny adalah memungkinkan untuk menempatkan kode R Anda di web, sehingga lebih mudah diakses oleh lebih banyak pengguna. Dengan R Shiny, Anda dapat membuat laporan data dan visual yang sangat kuat yang memungkinkan pengguna menganalisis kumpulan data. Seiring dengan komponen Shiny, elemen HTML dapat digunakan untuk mendesain konten program. Artikel hari ini memandu Anda melalui proses membangun aplikasi Web interaktif menggunakan paket R's Shiny. Untuk ini, pastikan sudah menginstal “RStudio”.

Instal Paket Shiny di RStudio

Sebelum beralih ke pembuatan aplikasi web interaktif di RStudio, kita harus sudah menginstal paket “Shiny” di dalamnya. Untuk ini, Anda perlu memperluas menu “Alat” di RStudio diikuti dengan opsi “Instal Paket”. Di dalam jendela yang terbuka, Anda harus menyebutkan paket yang ingin Anda instal, yaitu “mengkilap,” dan ketuk tombol “Instal”. RStudio akan menginstal paket mengkilap di konsol RStudio.







Memulai dengan Shiny di R

Untuk memulai Shiny di R, Anda perlu membuat file R baru menggunakan menu “File” yang terletak di urutan pertama RStudio. Perluas dan gunakan opsi 'File Baru' diikuti dengan opsi 'Skrip R'. File skrip “tanpa judul” akan dibuka di RStudio. Ganti namanya menjadi file “R” di lokasi yang Anda inginkan.



Sekarang, muat paket-paket yang diperlukan untuk membangun aplikasi interaktif di R, misalnya menggunakan fungsi “library” dari R. Pernyataan “if” digunakan untuk menginstal paket-paket yang belum diinstal sebelumnya. Paket Shiny digunakan untuk membangun antarmuka interaktif untuk aplikasi web bersama dengan beberapa visualisasi grafis. Paket “dplyr” terutama digunakan untuk memudahkan manipulasi data di R dengan memanfaatkan beberapa fungsi yang berguna.



Terakhir, paket “ggplot2” dimuat sebagai sumber visualisasi data yang hebat dengan membuat grafik yang disesuaikan dan kuat.





jika ( ! memerlukan Namespace ( 'berkilau' , diam-diam = BENAR ) ) {

Install. paket ( 'berkilau' )

}

jika ( ! memerlukan Namespace ( 'dplyr' , diam-diam = BENAR ) ) {

Install. paket ( 'dplyr' )

}

jika ( ! memerlukan Namespace ( 'ggplot2' , diam-diam = BENAR ) ) {

Install. paket ( 'ggplot2' )

}

perpustakaan ( berkilau )

perpustakaan ( dplyr )

perpustakaan ( ggplot2 )

Membangun Sistem Penilaian Ujian Interaktif

Dalam tutorial ini, kita akan membuat “Sistem Penilaian Ujian” bagi siswa untuk mendapatkan nilai yang dicapai melalui nilai yang diperoleh dari 100. Skrip yang disediakan adalah komponen “ui” dari aplikasi Shiny yang menentukan desain dan tampilan dari program. Program ini menghasilkan fluidPage, desain yang dapat disesuaikan dan dapat diskalakan untuk menyesuaikan jendela browser.

Sebuah 'titlePanel' dan 'sidebarLayout' adalah turunan dari 'fluidPage'. Judul program “Sistem Penilaian Ujian” adalah semua yang ditampilkan di “judulPanel”. “sidebarPanel” dan “mainPanel” adalah dua bagian yang digunakan “sidebarLayout” untuk membagi aplikasi. Sepasang input disertakan dalam “sidebarPanel”: “textAreaInput” bernama “score” ditambah “actionButton” bernama “calculate”.



Satu skor per baris dapat dimasukkan untuk setiap siswa menggunakan “textAreaInput”. Penilaian nilai dapat dimulai dengan menggunakan “actionButton”. Sepasang output ada di “mainPanel”: “tableOutput” bernama “Result” ditambah “plotOutput” bernama “ResultGraph”. Baik “tableOutput” maupun “plotOutput” akan menyajikan temuan perhitungan dalam bentuk grafik.

ui <- halaman cair (

judulPanel ( 'Sistem Penilaian Ujian' ) ,
tata letak bilah sisi (
Panel bilah sisi (
masukan area teks ( 'skor' , 'Masukkan Skor untuk Siswa (satu per baris):' , '' ) ,
Tombol tindakan ( 'menghitung' , 'Mari Menghitung Nilai' )
) ,
Panel utama (
keluaran tabel ( 'Hasil' ) ,
keluaran plot ( 'Grafik Hasil' )
) ) )

Metode server menetapkan logika sisi server aplikasi. Nilai siswa awalnya disimpan dalam variabel reaktif bernama “data”. Untuk ini, tombol “hitung” dipantau dengan metode “observeEvent” dari R. Setelah tombol dipicu, kode awalnya mengkonversi nilai yang dimasukkan dalam input kolom teks menjadi nilai numerik.

Setiap skor diikuti dengan jeda baris menggunakan “\n” untuk memasukkan skor baru di baris berikutnya. Metode ini menempatkan skor apa pun yang ditemukannya dalam variabel “data”. Jika pengguna tidak memasukkan skor, metode akan menampilkan pesan kesalahan.

server <- fungsi ( input output ) {

data <- reaktifVal ( BATAL )

amati Acara ( masukan$hitung, {

skor <- sebagai. numerik ( batalkan daftar ( strsplit ( masukan$skor, ' \N ' ) ) )

jika ( panjang ( skor ) > 0 ) {

data ( skor )

} kalau tidak {

data ( BATAL )

showModal ( modalDialog (

judul = 'Kesalahan' ,

'Kesalahan: Tolong tambahkan nilai!' ,

mudahTutup = BENAR

) )

}

} )

Dua keluaran, “output$Result” ditambah “output$ResultGraph”, ditentukan untuk menunjukkan nilai siswa dan nilai yang dicapai. Metode dinamis renderTable() menghasilkan tabel data nilai ujian dan nilai siswa yang diberi label “output$Result”. Metode renderPlot(), yang juga reaktif, menghasilkan grafik batang untuk nilai siswa dan menyimpannya dalam keluaran “output$ResultGraph” dengan cara yang sama.

Oleh karena itu, data tersebut akan ditinjau setiap kali data masukan diperbarui. Ekspresi if (!is.null(data())) menentukan apakah data yang diterima adalah null atau tidak. Skrip pernyataan “jika” dijalankan jika tidak kosong. Vektor skor untuk siswa membentuk “data” masukan. Setiap siswa diberi nilai berdasarkan skornya menggunakan metode case_when(). Bingkai data yang berisi nilai siswa dan nilai ujian dibuat menggunakan metode data.frame(). Kolom berikut ditambahkan ke bingkai data: “Siswa”, “Nilai”, dan “Nilai”. Distribusi nilai dikompilasi dalam tabel yang disebut “GradeCount” menggunakan metode table().

keluaran$Hasil <- renderTable ( {

jika ( ! adalah. batal ( data ( ) ) ) {

nilai <- kasus_kapan (

data ( ) > 80 ~ 'A' ,

data ( ) > 60 ~ 'B' ,

data ( ) > 40 ~ 'C' ,

data ( ) > 30 ~ 'D' ,

BENAR ~ 'F'

)

data. bingkai ( Murid = 1 : panjang ( data ( ) ) , Skor = data ( ) , Nilai = nilai )

}

} )

keluaran$HasilGraph <- renderPlot ( {

jika ( ! adalah. batal ( data ( ) ) ) {

nilai <- kasus_kapan (

data ( ) > 80 ~ 'A' ,

data ( ) > 60 ~ 'B' ,

data ( ) > 40 ~ 'C' ,

data ( ) > 30 ~ 'D' ,

BENAR ~ 'F'

)

Jumlah Nilai <- meja ( nilai )

Diagram batang dibuat menggunakan perpustakaan “ggplot2”. Hitung (jumlah total siswa yang memperoleh setiap nilai) dan kolom Nilai dibuat di DataFrame. Grafik batang dengan data “Grade” pada “sumbu x” dan data “Hitungan” pada “sumbu y” dibuat menggunakan metode geom_bar(). Opsi stat = “identity” menginstruksikan ggplot2 untuk menggunakan data aktual tanpa transformasi apa pun. Judul, label sumbu x, dan label sumbu y semuanya ditambahkan melalui metode “lab”. Warna batang ditetapkan menggunakan metode scale_fill_manual(). Garis grid dan komponen overlay yang tidak diperlukan dihilangkan menggunakan metode theme_minimal(). Metode mengkilapApp(ui, server) membangun sebuah aplikasi.

ggplot ( data = data. bingkai ( Nilai = nama ( Jumlah Nilai ) , Menghitung = sebagai. numerik ( Jumlah Nilai ) ) ,
aes ( X = Kelas, dan = Hitung, isi = Nilai ) ) +
geom_bar ( status = 'identitas' ) +
laboratorium ( judul = 'Distribusi Kelas' ,
X = 'Nilai' ,
Dan = 'Menghitung' ) +
skala_isi_manual ( nilai-nilai = C ( 'A' = 'hijau' , 'B' = 'ungu' , 'C' = 'Merah Jambu' ,
'D' = 'oranye' , 'F' = 'merah' ) ) +
tema_minimal ( )
}
} )
}
aplikasi mengkilap ( ui, server )

Saat menjalankan kode ini, kami mendapatkan antarmuka interaktif tempat kami menambahkan beberapa nilai dan mengklik tombol “Ayo Hitung Nilai”.

Tabel yang berisi nilai dan nilai siswa ditampilkan, diikuti dengan Grafik batang distribusi nilai dalam berbagai warna.

Kesimpulan

Panduan ini menjelaskan pentingnya penggunaan paket Shiny dalam bahasa R melalui RStudio. Untuk melengkapi penjelasan kami, kami membangun aplikasi web interaktif untuk sistem penilaian siswa dalam kode R dengan memanfaatkan paket “Shiny”.