日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
十個超級好用的R語言編程技巧,一般人絕不知道!

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

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比寬甸網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式寬甸網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋寬甸地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

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

1. switch函數(shù)

在if語句基于其他變量值來選定某個值時,switch可以很方便地縮短if語句。這個技巧在編程中需要根據(jù)之前的抉擇加載一個不同的數(shù)據(jù)集時非常有用。比如說,現(xiàn)在有一個變量“animal”,編程需要根據(jù)animal是dog,cat還是rabbit來加載一個不同的數(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ù)一個或多個輸入菜單選擇在Shiny應(yīng)用程序中加載不同的數(shù)據(jù)集甚至環(huán)境文件時,這個技巧非常有用。

2. RStudio快捷鍵

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

3. flexdashboard包

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

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

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

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

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

 
 
 
 
  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)行檢查。如果某個條件沒有滿足,特定的錯誤提醒會彈出。比如說當(dāng)用戶上傳了錯誤的文件時:

 
 
 
 
  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ù)據(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") 

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

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

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

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

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

具體來說,需要在R Markdown文件的YAML標(biāo)頭中設(shè)置參數(shù),并給每個參數(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)換文件,那么每個參數(shù)就會被設(shè)置成默認(rèn)值。但是,如果在轉(zhuǎn)換文件選擇參數(shù)時,選擇了RStudio中Knit下拉列表中的選項(xiàng)(或使用了kint_with_parameters()函數(shù)),一個菜單就會出現(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格式的演示文稿也意味著人們在聽演講時可以繼續(xù)使用平板電腦或手機(jī)。這真的很方便??梢酝ㄟ^安裝包并在YAML標(biāo)頭中調(diào)用來設(shè)置一個revealjs演示文稿。下面展出了使用revealjs做的一個演講的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)建了一個shiny應(yīng)用程序,該程序在執(zhí)行某個任務(wù)時需要花費(fèi)大量的時間。用戶希望在等待完成該任務(wù)的過程中,能夠執(zhí)行其他的多項(xiàng)任務(wù),所以可以利用tags$audio這一標(biāo)簽,讓該應(yīng)用程序在完成任務(wù)時播放勝利號角來提醒用戶。

10. praise包

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

praise包


當(dāng)前標(biāo)題:十個超級好用的R語言編程技巧,一般人絕不知道!
文章地址:http://m.5511xx.com/article/coscips.html