116 Views

Shiny-Aplikasi R berbasis Web – Shiny adalah kerangka kerja /framework untuk membuat aplikasi web menggunakan kode R yang dirancang untuk pada data science tanpa pengetahuan HTML, CSS, atau JavaScript.

Di sisi lain, Shiny tidak membatasi kita untuk membuat aplikasi sederhana namun Shiny telah dilengkapi dengan komponen antarmuka penggunanya dapat dengan mudah disesuaikan atau diperluas, dan servernya menggunakan pemrograman reaktif untuk memungkinkan kita membuat jenis logika back end apa pun yang kita inginkan.

Shiny dirancang agar mudah untuk digunakan serta memungkin kita mudah dalam  memahami cara kerjanya. Karena Shiny dibangun dari blok penyusun umum yang memiliki prinsip rekayasa perangkat lunak yang kuat di belakangnya.

Saat ini, Shiny digunakan di hampir banyak industri seperti R itu sendiri. Ini digunakan di dunia akademis sebagai alat pengajaran untuk konsep statistik, cara untuk membuat mahasiswa bersemangat belajar menulis kode serta digunakan oleh perusahaan besar untuk mempercepat kolaborasi antara ilmuwan dan analisis seperti untuk menemukan vaksin corona

Kemudahan menggunakan Shiny

Shiny adalah paket R yang memungkinkan kita membuat aplikasi web yang kaya dan interaktif dengan mudah. Shiny memudahkan kita dalam menanmpilkan  dan mengeksposnya melalui browser web sehingga siapa pun dapat menggunakannya.

Di masa lalu, membuat aplikasi web sulit bagi sebagian besar pengguna R karena:

  • Kita membutuhkan pengetahuan yang mendalam tentang teknologi web seperti HTML, CSS, dan JavaScript.
  • Membuat aplikasi interaktif yang kompleks membutuhkan analisis yang cermat atas alur interaksi untuk memastikan bahwa saat masukan berubah, hanya output/keluaran terkait yang diperbarui.

Shiny mempermudah programmer R untuk membuat aplikasi web dengan:

  • Menyediakan sekumpulan fungsi antarmuka pengguna (disingkat UI) yang dikurasi dengan cermat yang menghasilkan HTML, CSS, dan JavaScript yang diperlukan untuk tugas umum. Ini berarti kita tidak perlu mengetahui detail HTML / CSS / JS.
  • Memperkenalkan gaya baru pemrograman yang disebut pemrograman reaktif yang secara otomatis melacak ketergantungan potongan kode. Ini berarti bahwa setiap kali masukan berubah

Orang-orang menggunakan Shiny untuk:

  • Buat dasbor yang melacak indikator kinerja tingkat tinggi yang penting, sambil memfasilitasi penelusuran ke metrik yang membutuhkan penyelidikan lebih lanjut.
  • Bosan dengan ratusan halaman PDF yang itu-itu saja? Kita buat saja aplikasi interaktif yang memungkinkan pengguna melompat ke bagian yang tepat dari hasil yang mereka inginkan!
  • Komunikasikan model kompleks ke audiens non-teknis dengan visualisasi informatif dan analisis sensitivitas interaktif.
  • Menyediakan analisis data untuk alur kerja umum, mengganti permintaan email dengan aplikasi Shiny yang memungkinkan orang mengunggah data mereka sendiri dan melakukan analisis standar. Kita dapat membuat analisis R yang canggih tersedia bagi pengguna tanpa keahlian pemrograman.
  • Buat demo interaktif untuk mengajarkan statistik dan konsep sains data yang memungkinkan peserta didik menyesuaikan masukan dan mengamati efek hilir dari perubahan tersebut dalam analisis.

Singkatnya, Shiny memberi kita kemampuan untuk memberikan beberapa kekuatan super R kepada siapa saja yang dapat menggunakan web.

Kebutuhan Requirment Shiny

Beberapa kebutuhan package yang perlu kita install sebelumnya karena Shiny membutuhkan beberapa package dependecies yaitu

install.packages(c(
  "gapminder", "ggforce", "globals", "openintro", "RSQLite", "shiny", 
  "shinycssloaders", "shinyFeedback", "shinythemes", "testthat", 
  "thematic", "tidyverse", "vroom", "waiter", "xml2", "zeallot" 
))

Serta kita butuh RStudio sebagai IDE untuk menulis kode R

Jangan lupa untuk install shiny

install.packages("shiny")

Shiny Application

Kita akan membuat aplikasi Shiny sederhana. DImulai dari penamaan file yang dibutuhkan serta akan mempelajari cara memulai dan menghentikannya.

Selanjutnya kita akan mempelajari dua komponen utama dari setiap aplikasi Shiny: UI (kependekan dari antarmuka pengguna) yang menentukan tampilan aplikasi, dan fungsi server – server function yang menentukan cara kerja aplikasi.

Shiny menggunakan pemrograman reaktif – reactive programming untuk memperbarui keluaran secara otomatis saat masukan berubah

Buat direktori dan file aplikasi

Ada beberapa cara untuk membuat aplikasi Shiny. Paling sederhana adalah membuat direktori baru untuk aplikasi, jangan lupa setting work directory RStudio nya

dan meletakkan satu file bernama app.R di dalamnya. File app.R ini akan digunakan untuk memberi tahu Shiny bagaimana seharusnya aplikasi kita terlihat, dan bagaimana seharusnya perilakunya.

Cobalah dengan membuat direktori baru, dan tambahkan file app.R yang terlihat seperti ini:

library(shiny)
ui <- fluidPage(
  "Hello, world!"
)
server <- function(input, output, session) {
}
shinyApp(ui, server)

Setelah itu, klik Run App seperti berikut

hasil Run Shiny

Sebelum menutup aplikasi, kembali ke RStudio dan lihat konsol R. Kita akan melihat  seperti: Listening on http://127.0.0.1:7462

Ini memberi tahu Anda URL tempat aplikasi kita dapat ditemukan dengan IP Address  127.0.0.1 adalah alamat standar yang berarti “komputer ini” dan 3827 adalah nomor port yang ditetapkan secara acak. Kita dapat memasukkan URL itu ke browser web2 yang kompatibel2 untuk membuka salinan lain dari aplikasi Anda.

Perhatikan juga bahwa R sedang sibuk-busy: perintah R tidak terlihat, dan toolbar konsol menampilkan ikon tanda berhenti. Saat aplikasi Shiny berjalan, aplikasi ini “memblokir” konsol R. Artinya Kita tidak dapat menjalankan perintah baru di konsol R hingga aplikasi Shiny berhenti.

Menambahkan kontrol UI

Selanjutnya, ktaia akan menambahkan beberapa masukan dan keluaran ke UI yaitu agar aplikasi dapat menunjukkan semua frame data built-in yang disertakan dalam paket dataset. Ubahlah kode menjadi seperti berikut

ui <- fluidPage(
  selectInput("datasetku", label = "Dataset", choices = ls("package:datasets")),
  verbatimTextOutput("summary"),
  tableOutput("table")
)

Contoh ini menggunakan empat fungsi baru:

  • fluidPage() adalah fungsi tata letak yang menyiapkan struktur visual dasar halaman
  • selectInput() adalah kontrol masukan yang memungkinkan pengguna berinteraksi dengan aplikasi dengan memberikan nilai. Dalam hal ini, ini adalah kotak pilih dengan label “Set data” dan memungkinkan kita memilih salah satu set data bawaan yang disertakan dengan R
  • verbatimTextOutput() dan tableOutput() adalah kontrol keluaran yang memberi tahu Shiny di mana harus meletakkan keluaran yang dirender. verbatimTextOutput() menampilkan kode dan tableOutput() menampilkan tabel.

Menambahkan perilaku – behaviour

Selanjutnya, kita akan menghidupkan keluarannya dengan mendefinisikannya di fungsi server.

Shiny menggunakan pemrograman reaktif untuk membuat aplikasi menjadi interaktif. Kita akan memberi tahu Shiny cara mengisi ringkasan dan keluaran tabel di aplikasi. Ganti kode menjadi berikut

server <- function(input, output, session) {
  output$summary <- renderPrint({
    dataset <- get(input$datasetku, "package:datasets")
    summary(dataset)
  })
  
  output$table <- renderTable({
    dataset <- get(input$datasetku, "package:datasets")
    dataset
  })
}

output$ID menunjukkan memberikan untuk keluaran Shiny dengan ID tersebut.  render{Type} dirancang untuk menghasilkan jenis output tertentu (misalnya text, tables, dan plots), dan sering kali dipasangkan dengan fungsi Output{type}.

Misalnya, dalam aplikasi ini, renderPrint() dipasangkan dengan verbatimTextOutput() untuk menampilkan ringkasan statistik dengan teks lebar tetap (verbatim),

renderTable() dipasangkan dengan tableOutput() untuk menampilkan data masukan dalam tabel.

Perhatikan bahwa summary dan table  diperbarui setiap kali kita mengubah set data masukan. Ketergantungan ini dibuat secara implisit karena kita mengacu pada input$dataset dalam fungsi output.

input$dataset diisi dengan nilai saat ini dari komponen UI dengan dataset id, dan akan menyebabkan keluaran diperbarui secara otomatis setiap kali nilai itu berubah. Ini adalah inti dari reactivity: keluaran secara otomatis bereaksi (menghitung ulang) ketika masukannya berubah.

Pengurangan Duplikasi dengan reactive expressions

Urusan koding yang paling mudah dilakukan yaitu menghidari duplikasi kode dengan cara ini kode kita akan menjadi lebih ringkas serta terhindar dari error/bugs ketika sedang dilakukan perbaikan. Kalian bisa perhatikan terdapat duplikasi kode yaitu

dataset <- get(input$dataset, "package:datasets")

Untuk meringkas hal tersebut kita membutuhkan reactive expressions, kita akan ubah kode diatas menjadi seperti berikut

server <- function(input, output, session) {
  
  dataset <- reactive({
    get(input$datasetku,"package:datasets")
    
  })
  
  
  output$summary <- renderPrint( {
    summary(dataset()) #karena merupakan sebuah fungsi 
                        #maka harus pakai tanda ()
  }
    

  )
  output$table <- renderTable({
    dataset()
    
  })
}

Perhatikan dataset merupakan sebuah function sehingga untuk memanggilnya harus diperlakukan sebuah function dataset()

 

Latihan menggunakan Slider

Kita coba latihan, buatlah file app2.R yang diisi dengan kode berikut

library(shiny)

ui <- fluidPage(
  sliderInput("x", label = "jika x adalah", min = 1, max = 50, value = 30),
  "x * 5 = ",
  textOutput("kali")
)

server <- function(input, output, session) {
  output$kali <- renderText({
    x = input$x
    x * 5
  })
}

shinyApp(ui, server)

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

2 + 6 =