「r<-Shiny」工作流(一)開發(fā)工作流

工作流系列將向讀者介紹如何提升 3 個重要的 Shiny 工作流:

  • 創(chuàng)建應(yīng)用,進行更改并嘗試結(jié)果的基本開發(fā)周期。
  • 調(diào)試,找出代碼出了什么問題的技巧,并集思廣益地解決該問題。
  • 編寫 reprexes,這些獨立的代碼段說明了問題。 Reprexes是一種強大的調(diào)試技術(shù),如果你想從別人那里獲得幫助,它們是必不可少的。

首先我們將學(xué)習(xí)開發(fā)工作流。

優(yōu)化開發(fā)工作流程的目標(biāo)是減少做出更改和看到結(jié)果之間的時間。迭代的速度越快,你可以進行的實驗就越快,你就可以成為一名更好的 Shiny 開發(fā)人員。這里有兩個主要的工作流程需要優(yōu)化:第一次創(chuàng)建應(yīng)用程序,以及加快代碼調(diào)整和試驗結(jié)果的迭代周期。

創(chuàng)建 Shiny 應(yīng)用

我們基本上使用相同的六行 R 代碼啟動每個應(yīng)用程序:

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

你可能很快就厭倦了鍵入該代碼,因此 RStudio 提供了一些快捷方式:

  • 如果你已經(jīng)打開了要使用的 app.R,請鍵入 shinyapp,然后按 Shift + Tab 插入 Shiny 應(yīng)用程序片段。
  • 如果要啟動新項目,請轉(zhuǎn)到“文件”菜單,選擇“新建項目”,然后選擇“Shiny 的 Web 應(yīng)用程序”:
image

讀者可能認為學(xué)習(xí)這些快捷方式不值得,因為你每天只會創(chuàng)建一兩個應(yīng)用程序,但是創(chuàng)建簡單的應(yīng)用程序是在開始較大項目之前檢查基本概念的好方法,它們是調(diào)試的絕佳工具。

查看你的更改

可能你每天只創(chuàng)建幾個應(yīng)用程序,但你將運行數(shù)百次應(yīng)用程序,因此掌握開發(fā)工作流程尤為重要。降低迭代速度的第一種方法是避免單擊“運行應(yīng)用程序”按鈕,而是學(xué)習(xí)鍵盤快捷鍵Cmd/Ctrl + Shift + Enter。這為你提供了以下開發(fā)工作流程:

  1. 編寫一些代碼。
  2. 使用快捷鍵啟動應(yīng)用程序。
  3. 交互式地測試應(yīng)用。
  4. 關(guān)閉應(yīng)用。
  5. 回到第 1 步。

進一步降低迭代速度的另一種方法是打開自動重新加載(options(shiny.autoreload = TRUE)),然后在后臺作業(yè)中運行該應(yīng)用,使用此工作流程,保存文件后,您的應(yīng)用將重新啟動:無需關(guān)閉并重新啟動。這將導(dǎo)致更快的工作流程:

  1. 編寫代碼并運行保存快捷鍵保存文件。
  2. 交互式地測試應(yīng)用。
  3. 回到第 1 步。

具體使用方法見 https://github.com/sol-eng/background-jobs/tree/master/shiny-job

這種技術(shù)的主要缺點是,由于應(yīng)用程序是在單獨的進程中運行的,因此調(diào)試起來相當(dāng)困難。

隨著你的應(yīng)用程序變得越來越大,你會發(fā)現(xiàn)“交互式實驗”步驟開始變得繁重。很難記住要重新檢查應(yīng)用程序中可能受更改影響的每個組件。在后面的文章中,我們將學(xué)習(xí)自動測試的工具,該工具可讓我們將正在運行的交互式實驗轉(zhuǎn)換為自動代碼。這使我們可以更快地運行測試(因為它們是自動化的),這意味著我們不能忘記運行重要的測試。開發(fā)測試需要一些初期投資,但是對于大型應(yīng)用程序來說,這些投入是值得的。

控制視圖

默認情況下,運行該應(yīng)用程序時,它將顯示在彈出窗口中。我們可以從“運行應(yīng)用程序”下拉菜單中選擇其他兩個選項:

image
  • 在查看器窗格中運行對于較小的應(yīng)用程序很有用,因為你可以在運行應(yīng)用程序代碼的同時看到它。
  • 在外部瀏覽器中運行對于大型應(yīng)用程序很有用,或者如果你要檢查應(yīng)用程序的外觀是否與大多數(shù)用戶看到的情況完全相同。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容