В свят, в който работното натоварване изглежда се натрупва и времето изглежда намалява, поддържането на удовлетвореността на заинтересованите страни е истинско предизвикателство. С появата на платформи като Power BI, Shiny, Tableau и др., които позволяват на потребителите да създават интерактивни отчети за самообслужване, табла и приложения, това предизвикателство вече не изглежда обезсърчително.

Като инженер по надеждност, аз естествено гравитирам към използването на тези платформи за разработване на решения, които рационализират или автоматизират някои от ежедневните задачи. Взаимодействайки с множество заинтересовани страни през целия ден с различни нива на познания, свързани с инженеринга за надеждност, някои въпроси изглежда никога не остаряват, например: изискване за размер на извадката, демонстрация на надеждност, изчисления на продължителността на теста и т.н.

На много от тези въпроси може да се отговори с помощта на прости калкулатори, които в момента са базирани на Excel. Базираните на Excel файлове страдат от гледна точка на лекота на споделяне, липса на визуален и интерактивен интерфейс, предизвикателства с контрола на версиите и т.н. Това винаги ме караше да се чудя дали да разработя уеб базирани интерактивни инструменти, но тъй като съм машинен инженер с малко опит в кодирането, това винаги изглеждаше като трудна задача, докато не попаднах на Shiny.

Shiny е R пакет, който улеснява разработването на интерактивни уеб приложения. Започнах без опит в кодирането на R, за да мога да разработя прости приложения Shiny за по-малко от шест месеца. В тази статия споделям някои от ресурсите, които ми помогнаха по пътя, и показвам някои основни кодови фрагменти, които използвах в приложението си.

След като имах някои основни познания за R кодирането, започнах с уроци на Shiny website. Започва с предоставяне на основен шаблон за приложение, който може да се използва като основа за всички приложения, които може да разработите.

Шаблон за приложение:

library(shiny)
ui <- fluidPage()
server <- function(input, output)
shinyApp(ui = ui, server = server)

Изпълнението на горната част от кода създава празно лъскаво приложение.

Полезно е да се мисли за приложение Shiny по отношение на входове и изходи. Входовете са стойности, предоставени на приложението от потребител чрез превключване на различни обекти в приложението, докато изходът е R обект (графики, таблици, текст и т.н.), който отговаря, когато потребителят промени входовете.

fluidPage Функция:

Входове и изходи могат да се добавят към приложение чрез добавяне на функциите за вход и изход в fluidPage, както е показано по-долу:

ui <- fluidPage(
# *Input() functions,
# *Output() functions
)

Много различни типове входни и изходни обекти са налични в Shiny. Блестящият лист за измама се оказва изключително полезен в това отношение.

Пример 1: Код за създаване на плъзгач входен обект и графичен изходен обект:

ui <- fluidPage(
sliderInput(inputId = "num",
  label = "Choose a number",
  value = 25, min = 1, max = 100),
plotOutput(outputId = "hist")
)

Връзка към измамника: https://shiny.rstudio.com/images/shiny-cheatsheet.pdf

сървърна функция

След създаването на функциите за вход и изход, следващата стъпка е да кажете на сървъра как да сглоби входовете в изходите. Функцията render в комбинация с функцията output ни помага да добавим изхода R към потребителския интерфейс. Мамящият лист предоставя общ преглед на различни функции за рендиране, налични в Shiny, заедно със съответните функции за изход.

Пример 2: Код за свързване на вход към изход:

server <- function(input,output){
 output$hist <- renderPlot({
  hist(rnorm(input$num))
 })
}

Горният код свързва входната стойност на обекта на плъзгача „num“, показан в пример 1, с обекта на графиката „hist“.

След като се запознаете с основните елементи на приложението Shiny, можете да си поиграете с начини за създаване на различни оформления, вмъкване на изображения, създаване на раздели и т.н., за да добавите необходимата функционалност.

Моето приложение

По-долу е моментна снимка на приложението, което създадох заедно с примерен код.

library(ggplot2)
library(shiny)
ui <- fluidPage(
  titlePanel(div(img(src = ...),"...")),
  tabsetPanel(
    tabPanel("Tab Name1", fluid = TRUE,
             sidebarLayout(
               sidebarPanel(
                 sliderInput(
                   ....
                 ),
                 sliderInput(
                   ....
                 )
               ),
               mainPanel(
                 textOutput("..."),
                 plotOutput("hist"),
               )
             )
    ),
    tabPanel("Tab Name2", fluid = TRUE,
             ...
             )
    ),
    tabPanel("Tab Name3", fluid = TRUE,
             ...
             )
    )
server <- function(input, output) {
  
  output$hist = renderPlot({
    ggplot(...),
    ....,
    ....,
  })
  
}
shinyApp(ui = ui, server = server)

Надяваме се, че тази статия ви дава някои идеи и основни ресурси, за да създадете някои интересни блестящи приложения.

Давай блестящо!!