您可能不知道的 10 个有用的 R 功能

您可能不知道的 10 个有用的 R 功能

R充满了各种各样的功能。 下面我将列出其中十个最有趣的,但很多人可能不知道。 这篇文章是在我发现我在工作中使用的一些 R 功能的故事受到其他程序员的热烈欢迎之后发表的。 如果您已经了解了这一切,那么我很抱歉浪费您的时间。 同时,如果你有什么可以分享的,也可以在评论中推荐一些有用的东西。

技能箱推荐: 实践课程 “Python 开发者”.

我们提醒: 对于“Habr”的所有读者 - 使用“Habr”促销代码注册任何 Skillbox 课程可享受 10 卢布的折扣。

开关功能

我真的非常喜欢 switch()。 事实上,当根据另一个变量的值选择一个值时,它是 if 语句的便捷简写。 当我编写需要根据先前选择加载一组特定数据的代码时,我发现这特别有用。 例如,如果您有一个名为“动物”的变量,并且想要根据该动物是狗、猫还是兔子来选择一组特定的数据,请编写以下内容:

数据 < — 读取.csv(
开关(动物,
“狗”=“狗数据.csv”,
“猫”=“catdata.csv”,
“兔子”=“rabbitdata.csv”)
)

这一功能在闪亮的应用程序中非常有用,您需要根据一个或多个输入菜单项加载不同的数据集或环境文件。

RStudio 的热键

这个 hack 并不是针对 R,而是针对 RStudio IDE。 然而,热键总是非常方便,可以让您在输入文本时节省时间。 我最喜欢的是 Ctrl+Shift+M 用于 %>% 运算符,Alt+- 用于 <- 运算符。

要查看所有热键,只需在 RStudio 中按 Alt+Shift+K。

柔性仪表板包

当您需要快速启动 Shiny 仪表板时,没有什么比仪表板包更好的了。 它提供了使用 HTML 快捷方式的功能,从而可以轻松轻松地创建侧边栏、行和列。 还有使用标题栏的功能,它允许您将其放置在应用程序的不同页面上,在 Github 上留下图标、快捷方式、电子邮件地址等等。

该软件包允许您在 Rmarkdown 框架内工作,因此您可以将所有应用程序放在一个 Rmd 文件中,而不是将它们分布在不同的服务器和 UI 文件中,例如使用闪亮仪表板所做的那样。 每当我需要在处理复杂的事情之前创建一个简单的仪表板原型时,我都会使用 flexdashboard。 此功能使您可以在一小时内创建原型。

R Shiny 中的 req 和 validate 函数

在 R Shiny 中进行开发可能会令人困惑,尤其是当您不断收到奇怪的错误消息,这使得您很难理解正在发生的事情时。 但随着时间的推移,Shiny 不断发展和完善,这里出现了越来越多的功能,可以让你了解错误的原因。 因此,当通常不清楚发生了什么时,req() 通过“无声”错误解决了问题。 它允许您显示与先前操作关联的 UI 元素。 我们用一个例子来解释一下:

输出 $go_button < — 闪亮::renderUI({

# 如果选择了动物输入,则仅显示按钮

闪亮::请求(输入$动物)

# 显示按钮

闪亮::actionButton(“开始”,
粘贴(“进行”,输入$动物,“分析!”)
)
})

validate() 在渲染之前检查所有内容,并为您提供打印错误消息的选项 - 例如,用户上传了错误的文件:

# 获取csv输入文件

inFile < — 输入$file1
数据 < — inFile$datapath

# 仅当是狗时才渲染表

闪亮::渲染表({
# 检查它是狗文件,而不是猫或兔子
闪亮::验证(
need("狗名" %in% colnames(data)),
“未找到狗名称列 - 您加载了正确的文件吗?”
)

data
})

有关所有这些功能的更多信息 可以在这里找到.

在系统环境中存储您自己的凭据

如果您打算共享需要输入凭据的代码,请使用系统环境来避免在 Github 或其他服务上托管您自己的凭据。 放置示例:

系统.setenv(
DSN =“数据库名称”,
UID = "用户ID",
PASS =“密码”
)

现在您可以使用环境变量登录:

db < — DBI::dbConnect(
drv = odbc::odbc(),
dsn = Sys.getenv("DSN"),
uid = Sys.getenv("UID"),
pwd = Sys.getenv("PASS")
)

直接在操作系统中将它们设置为环境变量会更方便(特别是如果您经常使用数据)。 在这种情况下,它们将始终可用,您不必在代码中指定它们。

使用 styler 自动化 tidyverse

styler 包可以帮助您清理代码;它有许多选项可以自动将代码样式引入 tidyverse。 您需要做的就是在有问题的脚本上运行 styler::style_file() 。 该软件包将做很多(但不是全部)来恢复秩序。

参数化 R Markdown 文档

您已经创建了一个很棒的 R Markdown 文档,在其中分析了有关狗的各种事实。 然后你突然想到,最好做同样的工作,但只针对猫。 没问题,您只需一个命令即可自动创建 cat 报告。 为此,您只需参数化 R markdown 文档即可。

您可以通过为指定文档中的 YAML 标头设置参数,然后设置值参数来完成此操作。

— 标题:“动物分析”
作者:“基思·麦克纳尔蒂”
日期:“21 年 2019 月 XNUMX 日”
输出:
html_document:
code_folding:“隐藏”
参数:
动物名称:
值: 狗
选择:
-狗
-猫
- 兔子
学习年数:
输入:滑块
分钟:2000
最大值:2019
步骤1
第1轮
九月: ”
值:[2010、2017]—

现在您可以将文档代码中的所有变量注册为 params$animal_name 和 params$years_of_study。 然后我们将使用 Knit 下拉菜单(或 knit_with_parameters())并能够选择参数。

您可能不知道的 10 个有用的 R 功能

Revealjs

Revealjs 是一个软件包,可让您使用内置 R 代码、直观的导航和幻灯片菜单创建出色的 HTML 演示文稿。 HTML 快捷方式允许您快速创建具有不同样式选项的嵌套幻灯片结构。 HTML 可以在任何设备上运行,因此演示文稿可以在每部手机、平板电脑或笔记本电脑上打开。 可以通过安装包并在 YAML 标头中调用它来配置信息披露。 这是一个例子:

— 标题:“探索人员分析领域的边缘”
作者:“基思·麦克纳尔蒂”
输出:
Revealjs::revealjs_presentation:
中心:是的
模板:starwars.html
主题: 黑色
日期:“伦敦人力资源分析聚会 – 18 年 2019 月 XNUMX 日”
资源文件:
— 达斯.png
- 死亡之星.png
- hanchewy.png
- 千年.png
- r2d2-thirdpio.png
-starwars.html
—星球大战.png
—冲锋队.png
-

演示源代码 发布在这里,还有她自己rpubs.com/keithmcnulty/hr_meetup_london'>演示 - 这里。

您可能不知道的 10 个有用的 R 功能

R Shiny 中的 HTML 标签

大多数程序员没有充分利用 R Shiny 具有的 HTML 标签。 但这些只有 110 个标签,这使得为 HTML 函数或媒体播放创建简短的调用成为可能。 例如,我最近使用tags$audio 播放“胜利”声音,在任务完成时提醒用户。

包好评

使用这个包非常简单,但是需要向用户展示好评。 看起来很奇怪,但他们实际上很喜欢。

您可能不知道的 10 个有用的 R 功能

技能箱推荐:

来源: habr.com

添加评论