十個超級好用的R語言程式設計技巧,一般人絕不知道!

由於R語言生態系統內容繁複並在不斷發展,人們往往容易忽視一些切實有用的知識。這些技巧往往非常簡單,但對於完成工作有很大的幫助。本文將介紹十個能夠讓R語言程式設計工作更加輕鬆的小技巧。

1. switch函數

data <-read.csv(switch(animal,"dog" ="dogdata.csv","cat" ="catdata.csv","rabbit" ="rabbitdata.csv"))

當需要根據一個或多個輸入功能表選擇在Shiny應用程式中載入不同的資料集甚至環境檔時,這個技巧非常有用。

2. RStudio快速鍵

3. flexdashboard包

由於flexdashboard包基於RMarkdown進行操作,它允許把所有應用程式放在一個Rmd檔中,而不必像shinydashboard那樣把程式分成獨立的伺服器和UI(User Interface,使用者介面)檔。在需要創建一個簡單的儀錶盤初始版本並將其併入更高級的設計版本時,flexdashboard包十分好用。利用flexdashboard包可以在一個小時內啟動和運行儀錶盤。

4. R Shiny中的req函數和validate函數

當操作環境中沒有其他變數時,req()函數可以悄無聲息地阻止一個操作的發生,並且不彈出錯誤提醒。程式師因而可以在此前的操作中有條件地展示UI元件。以第一個小技巧中提到的例子為例:

output$go_button<- shiny::renderUI({# only display button if an animal input hasbeen chosenshiny::req(input$animal)# display buttonshiny::actionButton("go",paste("Conduct", input$animal, "analysis!"))})

validate()函數則可以在輸出結果前進行檢查。如果某個條件沒有滿足,特定的錯誤提醒會彈出。比如說當使用者上傳了錯誤的檔時:

# get csv inputfileinFile <-input$file1data <-inFile$datapath# render table onlyif it is dogsshiny::renderTable({# check that it is the dog file, not cats orrabbitsshiny::validate(need("Dog Name" %in%colnames(data)),"Dog Name column not found - did youload the right file?")data})

5. 利用系統環境保密所有憑證

Sys.setenv(DSN = "database_name",UID = "User ID",PASS = "Password")

這些環境變數可以用來登錄分享的腳本。比如:

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

更加簡便的是,如果頻繁使用某些憑證,可以在作業系統中把它們設定為環境變數。如此,用R語言系統工作時,便無需在程式碼中輸入就可以隨時使用這些憑證。(注意有憑證權限的人。)

6. styler自動生成tidyverse風格

7. 引數化R Markdown文件

當你分析了一大堆關於狗的事實並寫完一個滿意的R Markdown檔時,你被告知,「我還是對貓更感興趣」。這要怎麼辦呢?不要擔心。如果引數化了R Markdown檔,只要透過一個命令,就可以自動生成一份相似的關於貓的報告。

具體來說,需要在R Markdown檔的YAML標頭中設定引數,並給每個引數賦值。比如:

— -

title: "AnimalAnalysis"author: "KeithMcNulty"date: "21March 2019"output:html_document:code_folding: "hide"params:animal_name:value: Dogchoices:- Dog- Cat- Rabbityears_of_study:input: slidermin: 2000max: 2019step: 1round: 1sep: ''value: [2010, 2017]--

然後只需把這些變數用R語言,如params$animal_name和params$years_of_study寫進檔中就可以了。如果正常轉換檔,那麼每個引數就會被設定成預設值。但是,如果在轉換檔選擇引數時,選擇了RStudio中Knit下拉清單中的選項(或使用了kint_with_parameters()函數),一個功能表就會出現,來在轉換檔前選擇引數。非常棒!

引數轉換

8. revealjs包

— -

title:"Exporing the Edge of the People Analytics Universe"author: "KeithMcNulty"output:revealjs::revealjs_presentation:center: yestemplate: starwars.htmltheme: blackdate: "HRAnalytics Meetup London - 18 March, 2019"resource_files:- darth.png- deathstar.png- hanchewy.png- millenium.png- r2d2-threepio.png- starwars.html- starwars.png- stormtrooper.png---

程式碼傳送門:https://github.com/keithmcnulty/hr_meetup_london/blob/master/presentation.Rmd

演示文稿傳送門:http://rpubs.com/keithmcnulty/hr_meetup_london

9. R Shiny中的HTML標籤(以在Shiny應用程式中播放音訊為例)

10. praise包

轉載自:https://www.kdnuggets.com/2019/06/ten-useful-things-r.html

  • >>>

我是「數據分析那些事」。常年分享資料分析乾貨,不定期分享好用的職場技能工具。按讚我的粉專,回覆10,領取十週入門數據分析電子書唷!

我的系列文,瞭解一下??

往期文章:

2019年入門python,推薦這樣幾本好書!

一文讀懂大數據平台 — — 寫給大數據開發初學者的話!

【速藏!】這大概是史上最最全的大數據學習資源了!

我用Excel做了一個美國颶風的動效軌跡圖!

聽説可以給50個clap,你們也別太辛苦,49個就行^~^!

感謝支持小編

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store