由于R语言生态系统的复杂性和不断发展,人们往往容易忽略一些实际有用的知识。这些技巧通常非常简单,但对完成工作大有帮助。本文将介绍十个可以让R语言编程工作更轻松的小知识。1.switch函数当if语句根据其他变量值选择一个值时,switch可以方便地缩短if语句。当您需要根据先前的选择加载不同的数据集时,这个技巧在编程中非常有用。比如现在有一个变量“animal”,编程需要根据动物是狗、猫还是兔子加载不同的数据集。使用switch函数,可以输入如下代码:data<-read.csv(switch(animal,"dog"="dogdata.csv","cat"="catdata.csv","rabbit"="rabbitdata.csv"))当你需要根据一个或多个输入菜单选择在你的Shiny应用程序中加载不同的数据集甚至环境文件时,这个技巧很有用。2、相对于Rhack软件系统,RStudio快捷键在RStudioIDE(IntegratedDevelopmentEnvironment,集成开发环境)中更为常用。这些常用命令的快捷键非常实用,可以节省大量的打字时间。例如,Ctrl+Shift+M(管道运算符%>%)和Alt+-(赋值运算符<-)就是两个快捷键。如果想知道更方便好用的快捷键,可以在RStudio中输入Atl+Shift+K查看。3.flexdashboardpackage如果你想创建一个可以快速启动和高效运行的Shinydashboard,你可以选择flexdashboard。这个包提供了简单的HTML快捷方式,可以简化侧边栏的创建和构建行和列显示。还有一个非常方便的标题栏,可以将应用程序编译到不同的页面,并将图标和链接放入Github代码、电子邮件地址等。由于flexdashboard包基于RMarkdown运行,它允许所有应用程序放在一个Rmd文件中,而不是像shinydashboard那样将程序分成单独的服务器和UI(用户界面,用户界面)文件。当您需要创建仪表板的简单初始版本并将其合并到更高级的设计中时,flexdashboard包会派上用场。利用flexdashboard包在一小时内启动并运行仪表板。4.RShiny中的req函数和validate函数RShiny经常崩溃,尤其是弹出一般性的错误提示,程序员一头雾水。随着Shiny的发展,越来越多的验证功能和测试功能被添加到Shiny中,以帮助程序员更好地诊断和告警错误。当运行环境中没有其他变量时,req()函数可以在不弹出错误消息的情况下悄悄地阻止操作的发生。因此,程序员可以在之前的操作中有条件地显示UI元素。以第一个提示中提到的示例为例:"analysis!"))})validate()函数可以在输出结果之前进行检查。如果不满足某个条件,则会弹出特定的错误通知。例如,当用户上传错误的文件时:#getcsvinputfileinFile<-input$file1data<-inFile$datapath#rendertableonlyifitisdogsshiny::renderTable({#checkthatitisthedogfile,notcatsorrabbitsshiny::validate(need("DogName"%in%colnames(data)),"DogNamecolumnnotfound-didyouloadtherightfile?")data})5.使用系统环境对所有凭证保密如果在共享代码时设置了数据库登录凭证或类似设置,则可以使用系统环境防止凭证被上传到Github或其他地方导致代码泄露。这些凭据可以作为命名环境变量放置在R会话中。例如:Sys.setenv(DSN="database_name",UID="UserID",PASS="Password")这些环境变量可以用来登录共享脚本。例如:db<-DBI::dbConnect(drv=odbc::odbc(),dsn=Sys.getenv("DSN"),uid=Sys.getenv("UID"),pwd=Sys.getenv("PASS"))更简单的是,如果您经常使用某些凭据,您可以将它们设置为操作系统中的环境变量。这样,在使用R语言系统时,可以随时使用这些凭据,而无需在代码中输入它们。(有权限的请注意)6.styler自动生成的tidyverse风格的界面代码很多,但是并没有你想要的那么整齐,你也没有时间进行多行编辑。不用担心。styler包具有自动编辑代码和生成tidyverse样式的多种功能。只需运行styler::stylefile()即可完成大部分(并非全部)工作。7.参数化RMarkdown文件当你分析了一堆关于狗的事实并写了一个令人满意的RMarkdown文件时,你被告知,“我仍然对猫更感兴趣”。怎么办?不用担心。如果参数化RMarkdown文件,则可以使用单个命令自动生成关于猫的类似报告。具体需要在RMarkdown文件的YAML头中设置参数,并为每个参数赋值。例如:---title:"AnimalAnalysis"author:"KeithMcNulty"date:"21March2019"output:html_document:code_folding:"hide"params:animal_name:value:Dogchoices:-Dog-Cat-Rabbityyears_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包revealjs包嵌入了R代码,可以使用直观的幻灯片导航菜单在HTML中创建赏心悦目的演示文稿。它在RMarkdown中工作,并具有非常直观的HTML快捷方式,可以创建具有嵌套和逻辑结构的各种样式的精美幻灯片。HTML格式的演示文稿还意味着人们可以在听讲座的同时继续使用他们的平板电脑或手机。真的很方便。可以通过安装包并在YAML标头中调用它来设置revealjs演示文稿。使用revealjs制作的演示文稿的YAML标头如下所示。---标题:“探索人员分析宇宙的边缘”作者:“KeithMcNulty”输出:revealjs::revealjs_presentation:center:yestemplate:starwars.htmltheme:blackdate:“HRAnalyticsMeetupLondon-18March,2019”resource_files:-darth.png-deathstar.png-chepng-millenium.png-r2d2-threepio.png-starwars.html-starwars.png-stormtrooper.png---代码传送门:https://github.com/keithmcnulty/hr_meetup_london/blob/master/presentation.Rmdpresentation文档传送门:http://rpubs.com/keithmcnulty/hr_meetup_londonrevealjs帮你轻松完成在线演示9.RShiny中的HTML标签(以在Shiny应用中播放音频为例)HTML中有110种RShinyTags可以为各种HTML命令提供快捷方式,例如格式化。然而,大多数人并没有充分利用这些标签。例如,您创建了一个闪亮的应用程序,它需要花费大量时间来执行某项任务。用户希望在等待任务完成的同时能够执行多项其他任务,因此可以使用tags$audio标签让应用在任务完成时播放胜利的喇叭提醒用户。10、好评包好评包有一个极其简单却非常实用的功能,就是给用户点赞。虽然这个功能看起来像是毫无意义的自我欣赏,但它实际上有一个巨大的用途。当用户成功完成任务时,它可以表扬或鼓励用户。程序员也可以将这个包放在完成的脚本的末尾,享受程序顺利运行后带来的幸福时刻。好评包
