加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

十个超级好用的R语言编程技巧,一般人绝不知道!

发布时间:2019-07-22 18:51:49 所属栏目:评测 来源:读芯术
导读:由于R语言生态系统内容繁复并在不断发展,人们往往容易忽视一些切实有用的知识。这些技巧往往非常简单,但对于完成工作有很大的帮助。 本文将介绍十个能够让R语言编程工作更加轻松的小知识。 1. switch函数 在if语句基于其他变量值来选定某个值时,switch
副标题[/!--empirenews.page--]

由于R语言生态系统内容繁复并在不断发展,人们往往容易忽视一些切实有用的知识。这些技巧往往非常简单,但对于完成工作有很大的帮助。

本文将介绍十个能够让R语言编程工作更加轻松的小知识。

十个超级好用的R语言编程技巧,一般人绝不知道!

1. switch函数

在if语句基于其他变量值来选定某个值时,switch可以很方便地缩短if语句。这个技巧在编程中需要根据之前的抉择加载一个不同的数据集时非常有用。比如说,现在有一个变量“animal”,编程需要根据animal是dog,cat还是rabbit来加载一个不同的数据集。利用switch函数,可以输入以下代码:

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

当需要根据一个或多个输入菜单选择在Shiny应用程序中加载不同的数据集甚至环境文件时,这个技巧非常有用。

2. RStudio快捷键

和R hack软件系统相比,RStudio IDE(IntegratedDevelopment Environment,集成开发环境)中更常用到这一类技巧。这些常用命令的快捷键非常有用,可以节省很多敲键盘的时间。比如Ctrl+Shift+M(用于管道操作符%>%)和Alt+-(用于赋值运算符<-)两个快捷键。想要了解更多方便好用的快捷键,可以在RStudio中输入Atl+Shift+K查看。

3. flexdashboard包

如果想要创建一个能快速启动和高效运行的Shiny仪表盘,可以选择flexdashboard。这个包提供简单的HTML快捷方式,可以简化侧边栏创建和构建行列展示。还有超级便捷的标题栏,可以把应用程序编译到不同的页面,以及把图标和链接放入Github代码和邮件地址等。

由于flexdashboard包基于RMarkdown进行操作,它允许把所有应用程序放在一个Rmd文件中,而不必像shinydashboard那样把程序分成独立的服务器和UI(User Interface,用户界面)文件。在需要创建一个简单的仪表盘初始版本并将其并入更高级的设计版本时,flexdashboard包十分好用。利用flexdashboard包可以在一个小时内启动和运行仪表盘。

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

R Shiny常常让人崩溃,特别是在弹出一般性错误提醒而程序员又一头雾水的时候。随着Shiny的发展,越来越多的验证函数和测试函数加入了Shiny,帮助程序员更好地诊断和提醒错误。

当操作环境中没有其他变量时,req()函数可以悄无声息地阻止一个操作的发生,并且不弹出错误提醒。程序员因而可以在此前的操作中有条件地展示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()函数则可以在输出结果前进行检查。如果某个条件没有满足,特定的错误提醒会弹出。比如说当用户上传了错误的文件时:

  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. 利用系统环境保密所有凭证

如果在分享代码时,设置了数据库登录凭证或类似的设置,可以利用系统环境,防止凭证被上传到Github或其他地方造成代码泄露。可以把这些凭证作为命名环境变量放在R session中。比如:

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

这些环境变量可以用来登录分享的脚本。比如:

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

更加简便的是,如果频繁使用某些凭证,可以在操作系统中把它们设置为环境变量。如此,用R语言系统工作时,便无需在代码中输入就可以随时使用这些凭证。(注意有凭证权限的人。)

6. styler自动生成tidyverse风格

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读