您可能不知道的 10 個有用的 R 功能

您可能不知道的 10 個有用的 R 功能

R充滿了各種各樣的功能。 下面我將列出其中十個最有趣的,但很多人可能不知道。 這篇文章是在我發現我在工作中使用的一些 R 功能的故事受到其他程式設計師的熱烈歡迎之後發表的。 如果您已經了解了這一切,那麼我很抱歉浪費您的時間。 同時,如果你有什麼可以分享的,也可以在評論中推薦一些有用的東西。

技能箱推薦: 實踐課程 “Python 開發者”.

提醒: 對於“Habr”的所有讀者 - 使用“Habr”促銷代碼註冊任何 Skillbox 課程可享受 10 盧布的折扣。

開關功能

我真的非常喜歡 switch()。 事實上,當根據另一個變數的值選擇一個值時,它是 if 語句的方便簡寫。 當我編寫需要根據先前選擇載入一組特定資料的程式碼時,我發現這特別有用。 例如,如果您有一個名為「動物」的變量,並且想要根據該動物是狗、貓還是兔子來選擇一組特定的數據,請編寫以下內容:

資料 < — 讀取.csv(
開關(動物,
“狗”=“狗數據.csv”,
“貓”=“catdata.csv”,
“兔子”=“rabbitdata.csv”)
)

這項功能在閃亮的應用程式中非常有用,您需要根據一個或多個輸入選單項目載入不同的資料集或環境檔案。

RStudio 的熱鍵

這個 hack 並不是針對 R,而是針對 RStudio IDE。 然而,熱鍵總是非常方便,可以讓您在輸入文字時節省時間。 我最喜歡的是 Ctrl+Shift+M 用於 %>% 運算符,Alt+- 用於 <- 運算符。

若要查看所有熱鍵,只需在 RStudio 中按 Alt+Shift+K。

柔性儀表板包

當您需要快速啟動 Shiny 儀表板時,沒有什麼比儀表板套件更好的了。 它提供了使用 HTML 快捷方式的功能,從而可以輕鬆輕鬆地建立側邊欄、行和列。 還有使用標題列的功能,它允許您將其放置在應用程式的不同頁面上,在 Github 上留下圖標、快捷方式、電子郵件地址等等。

該軟體包可讓您在 Rmarkdown 框架內運作,因此您可以將所有應用程式放在 Rmd 檔案中,而不是將它們分佈在不同的伺服器和 UI 檔案中,例如使用閃亮儀表板所做的那樣。 每當我需要在處理複雜的事情之前創建一個簡單的儀表板原型時,我都會使用 flexdashboard。 此功能可讓您在一小時內建立原型。

R Shiny 中的 req 和 validate 函數

在 R Shiny 中進行開發可能會令人困惑,尤其是當您不斷收到奇怪的錯誤訊息,這使得您很難理解正在發生的事情時。 但隨著時間的推移,Shiny 不斷發展和完善,這裡出現了越來越多的功能,可以讓你了解錯誤的原因。 因此,當通常不清楚發生了什麼時,req() 透過「無聲」錯誤解決了問題。 它允許您顯示與先前操作關聯的 UI 元素。 我們用一個例子來解釋:

輸出 $go_button < — 閃亮::renderUI({

# 如果選擇了動物輸入,則僅顯示按鈕

閃亮::請求(輸入$動物)

# 顯示按鈕

閃亮::actionButton(“開始”,
貼上(“進行”,輸入$動物,“分析!”)
)
})

validate() 在渲染之前檢查所有內容,並為您提供列印錯誤訊息的選項 - 例如,使用者上傳了錯誤的檔案:

# 取得csv輸入文件

inFile < — 輸入$file1
資料 < — inFile$datapath

# 僅當是狗時才渲染表

閃亮::渲染表({
# 檢查它是狗文件,而不是貓或兔子
閃亮::驗證(
need("狗名" %in% colnames(data)),
“未找到狗名稱列 - 您加載了正確的文件嗎?”
)

數據
})

有關所有這些功能的更多信息 可以在這裡找到.

在系統環境中儲存您自己的憑證

如果您打算共用需要輸入憑證的程式碼,請使用系統環境來避免在 Github 或其他服務上託管您自己的憑證。 放置範例:

系統.setenv(
DSN =“資料庫名稱”,
UID = "使用者ID",
PASS =“密碼”
)

現在您可以使用環境變數登入:

db < — DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv("DSN"),
uid = Sys.getenv("UID"),
pwd = Sys.getenv("PASS")
)

直接在作業系統中將它們設定為環境變數會更方便(特別是如果您經常使用資料)。 在這種情況下,它們將始終可用,您不必在程式碼中指定它們。

使用 styler 自動化 tidyverse

styler 套件可以幫助您清理程式碼;它有許多選項可以自動將程式碼樣式引入 tidyverse。 您需要做的就是在有問題的腳本上執行 styler::style_file() 。 該軟體包將做很多(但不是全部)來恢復秩序。

參數化 R Markdown 文檔

您已經創建了一個很棒的 R Markdown 文檔,在其中分析了有關狗的各種事實。 然後你突然想到,最好做同樣的工作,但只針對貓。 沒問題,您只需一個命令即可自動建立 cat 報告。 為此,您只需參數化 R markdown 文件即可。

您可以透過為指定文件中的 YAML 標頭設定參數,然後設定值參數來完成此操作。

— 標題:“動物分析”
作者:“基思·麥克納爾蒂”
日期:“21 年 2019 月 XNUMX 日”
輸出:
html_文檔:
code_folding:“隱藏”
參數:
動物名稱:
值: 狗
選擇:
-狗
-貓
- 兔子
學習年數:
輸入:滑桿
分鐘:2000
最大值:2019
步驟1
第1輪
九月: ”
值:[2010、2017]—

現在您可以將文檔程式碼中的所有變數註冊為 params$animal_name 和 params$years_of_study。 然後我們將使用 Knit 下拉選單(或 knit_with_parameters())並能夠選擇參數。

您可能不知道的 10 個有用的 R 功能

Revealjs

Revealjs 是一個軟體包,可讓您使用內建 R 程式碼、直覺的導覽和投影片選單建立出色的 HTML 簡報。 HTML 捷徑可讓您快速建立具有不同樣式選項的巢狀投影片結構。 HTML 可以在任何裝置上運行,因此簡報可以在每部手機、平板電腦或筆記型電腦上開啟。 可以透過安裝套件並在 YAML 標頭中呼叫它來配置資訊揭露。 這是一個例子:

— 標題:“探索人員分析領域的邊緣”
作者:“基思·麥克納爾蒂”
輸出:
Revealjs::revealjs_presentation:
中心:是的
範本:starwars.html
主題: 黑色
日期:“倫敦人力資源分析聚會 – 18 年 2019 月 XNUMX 日”
資源文件:
— 達斯.png
- 死亡之星.png
- hanchewy.png
- 千禧年.png
- r2d2-thirdpio.png
-starwars.html
—星際大戰.png
—衝鋒隊.png
-

演示原始碼 發佈在這裡,還有她自己rpubs.com/keithmcnulty/hr_meetup_london'>演示 - 這裡。

您可能不知道的 10 個有用的 R 功能

R Shiny 中的 HTML 標籤

大多數程式設計師沒有充分利用 R Shiny 具有的 HTML 標籤。 但這些只有 110 個標籤,這使得為 HTML 函數或媒體播放創建簡短的呼叫成為可能。 例如,我最近使用tags$audio 播放「勝利」聲音,在任務完成時提醒使用者。

好評包

使用這個包非常簡單,但是需要向用戶展示好評。 看起來很奇怪,但他們實際上很喜歡。

您可能不知道的 10 個有用的 R 功能

技能箱推薦:

來源: www.habr.com

添加評論