自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

十個(gè)超級(jí)好用的R語言編程技巧,一般人絕不知道!

開發(fā) 開發(fā)工具
由于R語言生態(tài)系統(tǒng)內(nèi)容繁復(fù)并在不斷發(fā)展,人們往往容易忽視一些切實(shí)有用的知識(shí)。本文將介紹十個(gè)能夠讓R語言編程工作更加輕松的小知識(shí)。

由于R語言生態(tài)系統(tǒng)內(nèi)容繁復(fù)并在不斷發(fā)展,人們往往容易忽視一些切實(shí)有用的知識(shí)。這些技巧往往非常簡(jiǎn)單,但對(duì)于完成工作有很大的幫助。

本文將介紹十個(gè)能夠讓R語言編程工作更加輕松的小知識(shí)。

1. switch函數(shù)

在if語句基于其他變量值來選定某個(gè)值時(shí),switch可以很方便地縮短if語句。這個(gè)技巧在編程中需要根據(jù)之前的抉擇加載一個(gè)不同的數(shù)據(jù)集時(shí)非常有用。比如說,現(xiàn)在有一個(gè)變量“animal”,編程需要根據(jù)animal是dog,cat還是rabbit來加載一個(gè)不同的數(shù)據(jù)集。利用switch函數(shù),可以輸入以下代碼:

  1. data <-read.csv
  2.   switch(animal, 
  3.          "dog" ="dogdata.csv", 
  4.          "cat" ="catdata.csv", 
  5.          "rabbit" ="rabbitdata.csv") 

當(dāng)需要根據(jù)一個(gè)或多個(gè)輸入菜單選擇在Shiny應(yīng)用程序中加載不同的數(shù)據(jù)集甚至環(huán)境文件時(shí),這個(gè)技巧非常有用。

2. RStudio快捷鍵

和R hack軟件系統(tǒng)相比,RStudio IDE(IntegratedDevelopment Environment,集成開發(fā)環(huán)境)中更常用到這一類技巧。這些常用命令的快捷鍵非常有用,可以節(jié)省很多敲鍵盤的時(shí)間。比如Ctrl+Shift+M(用于管道操作符%>%)和Alt+-(用于賦值運(yùn)算符<-)兩個(gè)快捷鍵。想要了解更多方便好用的快捷鍵,可以在RStudio中輸入Atl+Shift+K查看。

3. flexdashboard包

如果想要?jiǎng)?chuàng)建一個(gè)能快速啟動(dòng)和高效運(yùn)行的Shiny儀表盤,可以選擇flexdashboard。這個(gè)包提供簡(jiǎn)單的HTML快捷方式,可以簡(jiǎn)化側(cè)邊欄創(chuàng)建和構(gòu)建行列展示。還有超級(jí)便捷的標(biāo)題欄,可以把應(yīng)用程序編譯到不同的頁面,以及把圖標(biāo)和鏈接放入Github代碼和郵件地址等。

由于flexdashboard包基于RMarkdown進(jìn)行操作,它允許把所有應(yīng)用程序放在一個(gè)Rmd文件中,而不必像shinydashboard那樣把程序分成獨(dú)立的服務(wù)器和UI(User Interface,用戶界面)文件。在需要?jiǎng)?chuàng)建一個(gè)簡(jiǎn)單的儀表盤初始版本并將其并入更高級(jí)的設(shè)計(jì)版本時(shí),flexdashboard包十分好用。利用flexdashboard包可以在一個(gè)小時(shí)內(nèi)啟動(dòng)和運(yùn)行儀表盤。

4. R Shiny中的req函數(shù)和validate函數(shù)

R Shiny常常讓人崩潰,特別是在彈出一般性錯(cuò)誤提醒而程序員又一頭霧水的時(shí)候。隨著Shiny的發(fā)展,越來越多的驗(yàn)證函數(shù)和測(cè)試函數(shù)加入了Shiny,幫助程序員更好地診斷和提醒錯(cuò)誤。

當(dāng)操作環(huán)境中沒有其他變量時(shí),req()函數(shù)可以悄無聲息地阻止一個(gè)操作的發(fā)生,并且不彈出錯(cuò)誤提醒。程序員因而可以在此前的操作中有條件地展示UI元件。以第一個(gè)小技巧中提到的例子為例:

  1. output$go_button<- shiny::renderUI({ 
  2.   # only display button if an animal input hasbeen chosen 
  3.   shiny::req(input$animal) 
  4.   # display button 
  5.   shiny::actionButton("go", 
  6.                      paste("Conduct", input$animal, "analysis!") 
  7.   ) 
  8. }) 

validate()函數(shù)則可以在輸出結(jié)果前進(jìn)行檢查。如果某個(gè)條件沒有滿足,特定的錯(cuò)誤提醒會(huì)彈出。比如說當(dāng)用戶上傳了錯(cuò)誤的文件時(shí):

  1. # get csv inputfile 
  2. inFile <-input$file1 
  3. data <-inFile$datapath 
  4. # render table onlyif it is dogs 
  5. shiny::renderTable({ 
  6.   # check that it is the dog file, not cats orrabbits 
  7.   shiny::validate( 
  8.     need("Dog Name" %in%colnames(data)), 
  9.     "Dog Name column not found - did youload the right file?" 
  10.   ) 
  11.   data 
  12. }) 

5. 利用系統(tǒng)環(huán)境保密所有憑證

如果在分享代碼時(shí),設(shè)置了數(shù)據(jù)庫登錄憑證或類似的設(shè)置,可以利用系統(tǒng)環(huán)境,防止憑證被上傳到Github或其他地方造成代碼泄露。可以把這些憑證作為命名環(huán)境變量放在R session中。比如:

  1. Sys.setenv( 
  2.   DSN = "database_name"
  3.   UID = "User ID"
  4.   PASS = "Password" 

這些環(huán)境變量可以用來登錄分享的腳本。比如:

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

更加簡(jiǎn)便的是,如果頻繁使用某些憑證,可以在操作系統(tǒng)中把它們?cè)O(shè)置為環(huán)境變量。如此,用R語言系統(tǒng)工作時(shí),便無需在代碼中輸入就可以隨時(shí)使用這些憑證。(注意有憑證權(quán)限的人。)

6. styler自動(dòng)生成tidyverse風(fēng)格

界面上有很多代碼,然而它們并不像你想要的那樣整潔,你也沒有時(shí)間進(jìn)行多線編輯。不要擔(dān)心。styler包有多個(gè)函數(shù)可以自動(dòng)編輯代碼,生成tidyverse風(fēng)格。只需要簡(jiǎn)單地運(yùn)行styler::style file(),它就會(huì)完成大部分(并不是所有)的工作。

7. 參數(shù)化R Markdown文件

當(dāng)你分析了一大堆關(guān)于狗的事實(shí)并寫完一個(gè)滿意的R Markdown文件時(shí),你被告知,“我還是對(duì)貓更感興趣”。這要怎么辦呢?不要擔(dān)心。如果參數(shù)化了R Markdown文件,只要通過一個(gè)命令,就可以自動(dòng)生成一份相似的關(guān)于貓的報(bào)告。

具體來說,需要在R Markdown文件的YAML標(biāo)頭中設(shè)置參數(shù),并給每個(gè)參數(shù)賦值。比如:

  1. --- 
  2. title: "AnimalAnalysis" 
  3. author: "KeithMcNulty" 
  4. date: "21March 2019" 
  5. output: 
  6.   html_document: 
  7.     code_folding: "hide" 
  8. params: 
  9.   animal_name: 
  10.     value: Dog 
  11.     choices: 
  12.       - Dog 
  13.       - Cat 
  14.       - Rabbit 
  15.   years_of_study: 
  16.     input: slider 
  17.     min: 2000 
  18.     max: 2019 
  19.     step: 1 
  20.     round: 1 
  21.     sep: '' 
  22.     value: [2010, 2017] 
  23. -- 

然后只需把這些變量用R語言,如params$animal_name和params$years_of_study寫進(jìn)文件中就可以了。如果正常轉(zhuǎn)換文件,那么每個(gè)參數(shù)就會(huì)被設(shè)置成默認(rèn)值。但是,如果在轉(zhuǎn)換文件選擇參數(shù)時(shí),選擇了RStudio中Knit下拉列表中的選項(xiàng)(或使用了kint_with_parameters()函數(shù)),一個(gè)菜單就會(huì)出現(xiàn),來在轉(zhuǎn)換文件前選擇參數(shù)。非常棒!

參數(shù)轉(zhuǎn)換

8. revealjs包

revealjs包內(nèi)嵌R代碼,可以使用直觀的幻燈片導(dǎo)航菜單在HTML中創(chuàng)建賞心悅目的演示文稿。它可以在R Markdown中使用,并有非常直觀的HTML快捷方式,可以創(chuàng)建具有嵌套和邏輯結(jié)構(gòu)的各種風(fēng)格的漂亮幻燈片。HTML格式的演示文稿也意味著人們?cè)诼犙葜v時(shí)可以繼續(xù)使用平板電腦或手機(jī)。這真的很方便??梢酝ㄟ^安裝包并在YAML標(biāo)頭中調(diào)用來設(shè)置一個(gè)revealjs演示文稿。下面展出了使用revealjs做的一個(gè)演講的YAML標(biāo)頭。

  1. --- 
  2. title:"Exporing the Edge of the People Analytics Universe" 
  3. author: "KeithMcNulty" 
  4. output: 
  5.   revealjs::revealjs_presentation: 
  6.     center: yes 
  7.     template: starwars.html 
  8.     theme: black 
  9. date: "HRAnalytics Meetup London - 18 March, 2019" 
  10. resource_files: 
  11. - darth.png 
  12. - deathstar.png 
  13. - hanchewy.png 
  14. - millenium.png 
  15. - r2d2-threepio.png 
  16. - starwars.html 
  17. - starwars.png 
  18. - stormtrooper.png 
  19. --- 
  • 代碼傳送門:https://github.com/keithmcnulty/hr_meetup_london/blob/master/presentation.Rmd
  • 演示文稿傳送門:http://rpubs.com/keithmcnulty/hr_meetup_london

revealjs助你輕而易舉完成線上演示文稿

9. R Shiny中的HTML標(biāo)簽(以在Shiny應(yīng)用程序中播放音頻為例)

R Shiny中有110種HTML標(biāo)簽,可以為各種各樣的HTML命令,如格式化,提供快捷方式。然而,大部分人都沒有充分利用這些標(biāo)簽。比如創(chuàng)建了一個(gè)shiny應(yīng)用程序,該程序在執(zhí)行某個(gè)任務(wù)時(shí)需要花費(fèi)大量的時(shí)間。用戶希望在等待完成該任務(wù)的過程中,能夠執(zhí)行其他的多項(xiàng)任務(wù),所以可以利用tags$audio這一標(biāo)簽,讓該應(yīng)用程序在完成任務(wù)時(shí)播放勝利號(hào)角來提醒用戶。

10. praise包

praise包具有極其簡(jiǎn)單但十分有用的功能,即贊美用戶。盡管這一功能看起來是毫無意義的自我贊賞,它實(shí)際上發(fā)揮著巨大的作用。它可以在用戶成功地完成一個(gè)任務(wù)時(shí),對(duì)用戶進(jìn)行贊美或鼓勵(lì)。程序員也可以把這個(gè)包放在已完成的腳本的最后,在程序順利運(yùn)行之后享受它帶來的幸福瞬間。

praise包

責(zé)任編輯:趙寧寧 來源: 讀芯術(shù)
相關(guān)推薦

2021-12-14 10:55:14

Python元素數(shù)據(jù)

2018-01-25 09:15:16

機(jī)房機(jī)柜走線

2019-04-01 06:37:12

R語言數(shù)據(jù)分析數(shù)據(jù)

2021-05-07 22:11:56

寬帶手機(jī)運(yùn)營商

2010-08-23 09:20:11

Linux命令

2015-06-24 10:01:47

2024-09-11 16:21:09

2025-03-19 09:46:45

2019-12-17 15:10:21

Python字符串代碼

2023-02-27 15:44:17

Java開發(fā)技巧

2022-03-03 23:56:29

JavaScriptArityAnonymous

2023-12-21 14:40:09

Python編程語言

2013-05-23 11:57:42

以太網(wǎng)千兆網(wǎng)絡(luò)以太網(wǎng)發(fā)展

2011-08-16 13:15:15

MongoDB

2009-04-14 21:38:05

LinuxUbuntu技巧

2023-07-07 14:47:46

JavaScript技巧

2024-01-30 00:40:10

2013-09-10 11:21:25

移動(dòng)互聯(lián)網(wǎng)移動(dòng)開發(fā)移動(dòng)市場(chǎng)

2014-04-10 13:15:54

PythonPython技巧

2017-07-21 11:12:51

跳線裝機(jī)技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)