Share Aplikasi R di ShinyApps

By | July 30, 2024
2,048 Views

ShinyApps – Share Aplikasi R di ShinyApps dengan mudah agar bisa diakses via web secara online – Share Aplikasi mu di R ShinyApps ketika saya bekerja dengan project yang ditulis menggunakan R maka sesi demo untuk menunjukan progress project perlu dilakukan. Klien menginginkan sebuah aplikasi berbasis GUI di R, tentu hal yang mudah dilakukan yaitu mengubah aplikasi tersebut di RShiny.

Untuk urusan demo project di R sebenarnya cukup mudah koq, kalian bisa upload project mu di https://www.shinyapps.io sehingga bisa dijalankan via web seperti layaknya membuat situs.

Langkah Daftar https://www.shinyapps.io

Untuk daftar https://www.shinyapps.io kalian bisa menggunakan account gmail atau facebook. Beruntungnya ada versi gratisan lho! Bisa upload 5 aplikasi dan 25 jam aktif. Lumayanlah buat demo kan project ke klien.

Setelah kalian udah register, maka akan mendapatkan sebuah API token untuk melakukan upload yang bisa kalian peroleh di menu berikut

ntar, jangan lupa show saja

rsconnect::setAccountInfo(name='mulkan',
           token='A122D5F606C8E8109CDBBC2AC9ED3CAA',
           secret='xxx')

Setting Aplikasi

Langkah dalam melakukan upload ke server tersebut yaitu, kalian harus install package dibawah ini terlebih dahulu

install.packages('rsconnect')

Setting Project RShiny

Biasanya saya develop RShiny jadi 1 yaitu gabung antara UI dan Server karena ukurannya yang kecil, namun demikian bila ukurannya cukup besar dan biar sesuai kaidah umum pembuatan GUi di RShiny sebaiknya kalian pisah saja.

Berikut sebuah aplikasi GUI di R untuk melakukan ploting, saya ambil dari dokumentasi ShinyApps biar mudah

Siapkan sebuah project yang sesuai standar Rshiny yaitu terdiri dari ui.R dan server.UI, misalkan saya punya sebuah project (buat mempermudah saja) berlokasi di E:\RShinnyApp didalamnya ada 2 script yaitu ui.R yang berisi kode berikut

library(shiny)
library(ggplot2)

dataset <- diamonds

fluidPage(

  titlePanel("Diamonds Explorer"),

  sidebarPanel(

    sliderInput('sampleSize', 'Sample Size', min=1, max=nrow(dataset),
                value=min(1000, nrow(dataset)), step=500, round=0),

    selectInput('x', 'X', names(dataset)),
    selectInput('y', 'Y', names(dataset), names(dataset)[[2]]),
    selectInput('color', 'Color', c('None', names(dataset))),

    checkboxInput('jitter', 'Jitter'),
    checkboxInput('smooth', 'Smooth'),

    selectInput('facet_row', 'Facet Row', c(None='.', names(dataset))),
    selectInput('facet_col', 'Facet Column', c(None='.', names(dataset)))
  ),

  mainPanel(
    plotOutput('plot')
  )
)

serta server.R dengan kode sebagai berikut

library(shiny)
library(ggplot2)

function(input, output) {

  dataset <- reactive({
    diamonds[sample(nrow(diamonds), input$sampleSize),]
  })

  output$plot <- renderPlot({

    p <- ggplot(dataset(), aes_string(x=input$x, y=input$y)) + geom_point()

    if (input$color != 'None')
      p <- p + aes_string(color=input$color)

    facets <- paste(input$facet_row, '~', input$facet_col)
    if (facets != '. ~ .')
      p <- p + facet_grid(facets)

    if (input$jitter)
      p <- p + geom_jitter()
    if (input$smooth)
      p <- p + geom_smooth()

    print(p)

  }, height=700)

}

Setelah semua siap dengan kode diatas buka saja, RStudio jangan lupa setting sessionnya sesuai lokasi diatas, kemudian jalankan kode berikut

library(rsconnect)
rsconnect::setAccountInfo(name='mulkan',
                          token='A122D5F606C8E8109CDBBC2AC9ED3CAA',
                          secret='xxx')

deployApp()

maka tampilan Console di RStudio seperti berikut yang menandakan sedang dalam proses upload

Preparing to deploy application...DONE
Uploading bundle for application: 3901681...DONE
Deploying bundle: 4423337 for application: 3901681 ...
Waiting for task: 902811791
  building: Parsing manifest
  building: Building image: 5071963
  building: Installing system dependencies
  building: Fetching packages
  building: Installing packages
  building: Installing files
  building: Pushing image: 5071963
  deploying: Starting instances
  unstaging: Stopping old instances
Application successfully deployed to https://mulkan.shinyapps.io/deploy/

Contoh yang sudah aktif, kalian bisa lihat sesuai dengan alamat diatas, sebagai contoh https://mulkan.shinyapps.io/rshinnyapp/

See also  Shiny-Aplikasi R berbasis Web

Saya sudah mencoba untuk melakukan upload dengan banyak folder dan script resource dengan cara diatas, aman-aman saja karena rsconnect akan secara otomatis melakukan upload depencies nya koq, bila masih belum paham, bisa kalian baca dokumentasi berikut

Contoh Project yang sudah dipublish

Berikut contoh aplikasi dasboard yang dibuat menggunakan RShiny https://mulkan.shinyapps.io/Developing_BIA_2021/