Linux中國

使用 R 語言構建一個可交互的 Web 應用

數據分析已成為企業的當務之急,並且對具有用戶友好界面的數據驅動應用程序有巨大的需求。本文介紹如何使用 R 語言中的 Shiny 包開發互動式 Web 應用程序,R 語言是一種流行的數據科學編程語言。

如今,世界各地幾乎所有企業都以某種形式依賴於數據。數據科學通過使用數據驅動的應用程序幫助許多企業實現轉型,無論是在金融、銀行、零售、物流、電子商務、運輸、航空還是任何其他領域。

高性能計算機和低成本存儲使我們現在能夠在幾分鐘內預測結果,而不是像以前一樣以前需要花費很多時間。數據科學家著眼於未來,正在開發具有高性能和多維可視化的便捷應用。這一切都始於大數據,它由三個組成部分組成:數量、多樣性和速度。演算法和模型都是根據這些數據提供的。機器學習和人工智慧領域最前沿的數據科學家正在創建能夠自我改進、檢測錯誤並從中學習的模型。

在數據科學領域,統計和計算用於將數據轉化為有用的信息,通常稱為數據驅動科學。數據科學是來自各個領域的方法的綜合,用於收集、分析和解釋數據,以形成新的見解並做出選擇。構成數據科學的技術學科包括統計學、概率、數學、機器學習、商業智能和一些編程。

數據科學可以應用於各個領域(圖 1)。對大型、複雜數據集的分析是數據科學的重點。它幫助我們創建了一個以全新方式看待數據的新宇宙。亞馬遜、谷歌和 Facebook 等科技巨頭利用數據科學原理進行商業智能和商業決策。

Figure 1 Key applications-and use cases of data science

R 語言:為數據科學量身打造的語言

由於海量的可用信息,我們迫切需要數據分析以得到新的見解,在多種技術的幫助下,原始數據轉化為成品數據產品。在數據研究、處理、轉換和可視化方面,沒有比 R 語言更好的工具了。

R 語言用於數據科學的主要功能包括:

  • 數據預處理
  • 社交媒體數據獲取和分析
  • 對數據結構的各種操作
  • 提取、轉換、載入(ETL)
  • 連接到各種資料庫,包括 SQL 和電子表格
  • 與 NoSQL 資料庫交互
  • 使用模型進行訓練和預測
  • 機器學習模型
  • 聚類
  • 傅里葉變換
  • 網頁抓取

R 語言是一種強大的編程語言,常用於統計計算和數據分析。有關優化 R 語言用戶界面的努力由來已久。從簡單的文本編輯器到更現代的互動式 R Studio 和 Jupyter Notebooks,世界各地的多個數據科學小組都在關注 R 語言的發展。

只有全世界 R 用戶的貢獻才使這一切成為可能。R 語言中包含的強大軟體包使其日益強大。許多開源軟體包使處理大型數據集和可視化數據變得更加容易和高效。

使用 Shiny 在 R 語言中開發互動式 Web 應用

你可以使用 Shiny 包在 R 語言中構建互動式 Web 應用程序。應用程序可以託管在網站上、嵌入 R Markdown 文檔中,或用於開發控制面板板和可視化。CSS 主題、HTML 小部件和 JavaScript 操作都可以用於進一步自定義你的 Shiny 應用程序。

Shiny 是一款 R 語言工具,它可以輕鬆創建互動式的 Web 應用程序。它允許你將你的 R 代碼擴展到 Web 上,從而使更多的人能夠使用它,從中獲益。

除了 Shiny 內置的功能外,還有許多第三方擴展包可用,例如 shinythemes、shinydashboard 和 shinyjs。

使用 Shiny 可以開發各種應用程序。以下是其中一些:

  • 基於 Web 應用的機器學習
  • 具有動態控制項的 Web 應用程序
  • 數據驅動的儀錶盤
  • 多重數據集的互動式應用
  • 實時數據可視化面板
  • 數據收集表單

Shiny Web 應用程序可以分為以下幾類:

  • 用戶介面
  • 服務功能邏輯
  • Shiny 應用邏輯

獲取更深理解,請訪問以下網站 https://shiny.rstudio.com/gallery/

其中某個用 Shiny 開發的應用如圖 2(https://shiny.rstudio.com/gallery/radiant.html )。

Figure 2: Shiny based app

銷售儀錶盤的生成

下面是一個與銷售儀錶盤相關的 Web 應用程序的代碼片段。該儀錶板具有多個控制項和用戶界面模塊,用於查看數據。

首先,安裝 Shiny 包,然後在代碼中調用它,以便將輸出呈現為 Web 頁面的形式。

library(shiny)
library(dplyr)

sales <- vroom::vroom(「salesdata.csv」, na = 「」)
ui <- fluidPage(
    titlePanel(「Dashboard for Sales Data」),
    sidebarLayout(
        sidebarPanel(
            selectInput(「territories」, 「territories」, choices = unique(sales$territories)),
            selectInput(「Customers」, 「Customer」, choices = NULL),
            selectInput(「orders」, 「Order number」, choices = NULL, size = 5, selectize = FALSE),
        ),
        mainPanel(
            uiOutput(「customer」),
            tableOutput(「data」)
        )
    )
)
server <- function(input, output, session) {
    territories <- reactive({
        req(input$territories)
        filter(sales, territories == input$territories)
    })
    customer <- reactive({
        req(input$Customers)
        filter(territories(), Customers == input$Customers)
    })

    output$customer <- renderUI({
        row <- customer()[1, ]
        tags$div(
            class = 「well」,
            tags$p(tags$strong(「Name: 「), row$customers),
            tags$p(tags$strong(「Phone: 「), row$contact),
            tags$p(tags$strong(「Contact: 「), row$fname, 「 「, row$lname)
        )
    })

    order <- reactive({
        req(input$order)
        customer() %>%
        filter(ORDER == input$order) %>%
        arrange(OLNUMBER) %>%
        select(pline, qty, price, sales, status)
    })

    output$data <- renderTable(order())

    observeEvent(territories(), {
        updateSelectInput(session, 「Customers」, choices = unique(territories()$Customers), selected = character())
    })
    observeEvent(customer(), {
        updateSelectInput(session, 「order」, choices = unique(customer()$order))
    })
}
shinyApp(ui, server)

運行 Shiny 應用程序的代碼後,生成了圖 3 所示的輸出,可以在任何 Web 瀏覽器上查看。銷售儀錶盤具有多個控制項,並且具有不同的用戶界面模塊,非常互動。

Figure 3: Sales dashboard with multiple controls

通過使用 Shiny Cloud,可以將這個應用程序部署和託管在雲上,以便隨時隨地在互聯網上使用。

Figure 4: Cloud for hosting and deployment of Shiny app

Shiny Cloud 的免費版本允許在 25 個活動小時內部署五個應用程序。研究人員和數據科學家可以使用 R 的 Shiny 庫開發基於實時數據驅動的用戶友好應用程序。這個庫也可以用於在 Web 平台上部署他們的機器學習應用程序。

(題圖:MJ/1a76ad20-e56d-480b-b28b-8cf74d2230a1)

via: https://www.opensourceforu.com/2022/10/using-r-for-building-an-interactive-web-app/

作者:Dr Kumar Gaurav 選題:lkxed 譯者:Charonxin 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
1
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國