百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

不看就晚了!10个超级好用的R语言编程技巧

bigegpt 2024-08-16 14:15 2 浏览

全文共3997字,预计学习时长8分钟



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


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


1. switch函数

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

data <-read.csv(
 switch(animal,
 "dog" ="dogdata.csv",
 "cat" ="catdata.csv",
 "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元件。以第一个小技巧中提到的例子为例:

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


validate()函数则可以在输出结果前进行检查。如果某个条件没有满足,特定的错误提醒会弹出。比如说当用户上传了错误的文件时:


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


5. 利用系统环境保密所有凭证


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

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风格

界面上有很多代码,然而它们并不像你想要的那样整洁,你也没有时间进行多线编辑。不要担心。styler包有多个函数可以自动编辑代码,生成tidyverse风格。只需要简单地运行styler::style file(),它就会完成大部分(并不是所有)的工作。


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: Dog
 choices:
 - Dog
 - Cat
 - Rabbit
 years_of_study:
 input: slider
 min: 2000
 max: 2019
 step: 1
 round: 1
 sep: ''
 value: [2010, 2017]
--


然后只需把这些变量用R语言,如params$animal_name和params$years_of_study写进文件中就可以了。如果正常转换文件,那么每个参数就会被设置成默认值。但是,如果在转换文件选择参数时,选择了RStudio中Knit下拉列表中的选项(或使用了kint_with_parameters()函数),一个菜单就会出现,来在转换文件前选择参数。非常棒!





8. revealjs包

revealjs包内嵌R代码,可以使用直观的幻灯片导航菜单在HTML中创建赏心悦目的演示文稿。它可以在R Markdown中使用,并有非常直观的HTML快捷方式,可以创建具有嵌套和逻辑结构的各种风格的漂亮幻灯片。HTML格式的演示文稿也意味着人们在听演讲时可以继续使用平板电脑或手机。这真的很方便。可以通过安装包并在YAML标头中调用来设置一个revealjs演示文稿。下面展出了使用revealjs做的一个演讲的YAML标头。

---
title:"Exporing the Edge of the People Analytics Universe"
author: "KeithMcNulty"
output:
 revealjs::revealjs_presentation:
 center: yes
 template: starwars.html
 theme: black
date: "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
---



9. R Shiny中的HTML标签(以在Shiny应用程序中播放音频为例)

R Shiny中有110种HTML标签,可以为各种各样的HTML命令,如格式化,提供快捷方式。然而,大部分人都没有充分利用这些标签。比如创建了一个shiny应用程序,该程序在执行某个任务时需要花费大量的时间。用户希望在等待完成该任务的过程中,能够执行其他的多项任务,所以可以利用tags$audio这一标签,让该应用程序在完成任务时播放胜利号角来提醒用户。


10. praise包

praise包具有极其简单但十分有用的功能,即赞美用户。尽管这一功能看起来是毫无意义的自我赞赏,它实际上发挥着巨大的作用。它可以在用户成功地完成一个任务时,对用户进行赞美或鼓励。程序员也可以把这个包放在已完成的脚本的最后,在程序顺利运行之后享受它带来的幸福瞬间。





留言 点赞 关注

我们一起分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”

相关推荐

了解Linux目录,那你就了解了一半的Linux系统

大到公司或者社群再小到个人要利用Linux来开发产品的人实在是多如牛毛,每个人都用自己的标准来配置文件或者设置目录,那么未来的Linux则就是一团乱麻,也对管理造成许多麻烦。后来,就有所谓的FHS(F...

Linux命令,这些操作要注意!(linux命令?)

刚玩Linux的人总觉得自己在演黑客电影,直到手滑输错命令把公司服务器删库,这才发现命令行根本不是随便乱用的,而是“生死簿”。今天直接上干货,告诉你哪些命令用好了封神!喜欢的一键三连,谢谢观众老爷!!...

Linux 命令速查手册:这 30 个高频指令,拯救 90% 的运维小白!

在Linux系统的世界里,命令行是强大的武器。对于运维小白而言,掌握一些高频使用的Linux命令,能极大提升工作效率,轻松应对各种系统管理任务。今天,就为大家奉上精心整理的30个Linu...

linux必学的60个命令(linux必学的20个命令)

以下是Linux必学的20个基础命令:1.cd:切换目录2.ls:列出文件和目录3.mkdir:创建目录4.rm:删除文件或目录5.cp:复制文件或目录6.mv:移动/重命名文件或目录7....

提高工作效率的--Linux常用命令,能够决解95%以上的问题

点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...

15 个实用 Linux 命令(linux命令用法及举例)

Linux命令行是系统管理员、开发者和技术爱好者的强大工具。掌握实用命令不仅能提高效率,还能解锁Linux系统的无限潜力,本文将深入介绍15个实用Linux命令。ls-列出目录内容l...

Linux 常用命令集合(linux常用命令全集)

系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DM...

Linux的常用命令就是记不住,怎么办?

1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...

Linux常用文件操作命令(linux常用文件操作命令有哪些)

ls命令在Linux维护工作中,经常使用ls这个命令,这是最基本的命令,来写几条常用的ls命令。先来查看一下使用的ls版本#ls--versionls(GNUcoreutils)8.4...

Linux 常用命令(linux常用命令)

日志排查类操作命令查看日志cat/var/log/messages、tail-fxxx.log搜索关键词grep"error"xxx.log多条件过滤`grep-E&#...

简单粗暴收藏版:Linux常用命令大汇总

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友在Linux系统中,命令行界面(CLI)是管理员和开发人员最常用的工具之一。通过命令行,用户可...

「Linux」linux常用基本命令(linux常用基本命令和用法)

Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。总结送免费学习资料(包含视频、技术学习路线图谱、文档等)1、显示日期的指令:d...

Linux的常用命令就是记不住,怎么办?于是推出了这套教程

1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...

Linux的30个常用命令汇总,运维大神必掌握技能!

以下是Linux系统中最常用的30个命令,精简版覆盖日常操作核心需求,适合快速掌握:一、文件/目录操作1.`ls`-列出目录内容`ls-l`(详细信息)|`ls-a`(显示隐藏文件)...

Linux/Unix 系统中非常常用的命令

Linux/Unix系统中非常常用的命令,它们是进行文件操作、文本处理、权限管理等任务的基础。下面是对这些命令的简要说明:**文件操作类:*****`ls`(list):**列出目录内容,显...