用天赋装饰你的R代码

rmarkdown

凯利Bodwin


更新:看一段15分钟关于这个套餐的对话:
https://kbod.win/talks/user_2020
https://youtu.be/sXFJ_AZ4jeA


今天我非常荣幸地向大家介绍天赋包

下面是一个课堂灾难的例子,它激发了这个包:

您正在向类或观众展示分析,然后转到幻灯片,其中显示源代码及其输出。因为要强调源代码的某一行,所以将代码文本复制粘贴到幻灯片中,并在相关部分添加高亮显示。

打开幻灯片后,你会惊恐地发现你修改了源代码,但是你忘记编辑幻灯片了。屏幕上显示的代码文本不再与输出匹配,您的学生感到困惑。

这能引起共鸣吗?你也经历过这个恐怖故事吗?

这种材料的不可复制性,以及手工高亮代码文本的繁琐本质所带来的简单挫败感,让我发展出了天赋。我首先为教育工作者编写了这个软件包,尽管我发现它对会议演讲和研讨会同样有用。

是的,这是故意的。

您可以在这里找到基本的包文档和小插图这个网站.不过,今天我想花点时间给你们看几个我最喜欢的天赋的例子,让你们知道它在课堂上或演讲中是如何有用的。

这些例子都使用了baby_names数据集的https://www.kaggle.com/kaggle/us-baby-names,其中包含了自19世纪以来各州以不同名字出生的婴儿数量。我们的数据将仅限于在加利福尼亚州出生的名字为“凯利”的婴儿。你可以下载这个数据跟着走。

例1:强调代码中的小差异。

flair最默认的功能是快速为代码添加基本的高亮显示。

这个简单的功能有很多用例。我特别喜欢用天赋()函数显示代码中的小更改如何影响输出。

例如,假设我在教概念几何图形ggplot.我希望绘制出加州每年出生的名字为“Kelly”的婴儿数量,并以出生时分配的性别进行着色。

我做了两个不同的情节;一个用列,一个用行。我工作的代码块是这样的:

' ' ' {r geoms, include=FALSE} baby_names %>% ggplot(aes(x = Year, y = Count, fill = Gender)) + geom_col() baby_names %>% ggplot(aes(x = Year, y = Count, color = Gender)) + geom_line()' ' '

装修而且天赋函数,我可以触发这个代码块进行计算,同时为我的代码的选定部分添加高亮显示。

通常,我们会用echo = FALSE放在第一块下面,这样就看不见了天赋()的过程。

装修“几何学”% > %天赋“_col”% > %天赋"fill = "% > %天赋“_line”% > %天赋"color = "
baby_names % > %
ggplot(aes(x =年份,y =计数,填补=性别))+
几何学_col()

baby_names % > %
ggplot(aes(x =年份,y =计数,颜色=性别))+
几何学_line()

注意:如果您有许多代码片段需要修饰,并且您不想手动指定所有内容,则flair_rx ()函数允许您输入正则表达式而不是固定的字符串。

例2:将颜色与概念相匹配。

在教学时,我们经常想把概念和代码联系起来,就像这张由天赋创造的美丽幻灯片一样安德鲁Heiss

有天赋的R Markdown幻灯片

给代码的不同部分涂上不同的颜色是很简单的天赋().方法,还可以使用管道字符串作为额外的快捷方式天赋函数为文本部分上色,如果您愿意,甚至可以添加自己的特殊HTML标记。

代码块:

{r, results = "asis", echo = FALSE} "该模型有一个响应变量,两个预测变量和一个交互项。"%>% flair("response variable", color = "deeppink") %>% flair("predictors", color = "cornflowerblue") %>% flair("interaction term", color = "orange") %>% flair_all(before = "

", after = "

") %>% cat()' ' '
{r, echo = FALSE} decoration ("lm") %>% flair("Count", color = "deeppink") %>% flair("Gender:Year", color = "orange") %>% flair_rx("Gender |Year ", color = "cornflowerblue")' ' '

结果:

这个模型有一个反应变量,两个预测,以及相互作用项

Mod <- lm(性别+一年+性别:年, data = baby_names)

总结(mod)
## ##调用:## lm(公式=计数~性别+年份+性别:年份,数据= baby_names) ## ##残差:##最小1Q中位数3Q最大## -625.27 -128.36 -13.67 155.13 943.86 ## ##系数:##估计标准误差t值Pr(>|t|) ##(拦截)837.0953 3555.4360 0.235 0.814 ##性别m 2769.6513 4980.9342 0.556 0.579 ##年-0.1064 1.7965 -0.059 0.953 ##性别m:年-1.6660 2.5171 -0.662 0.509 ## ##残差标准误差:在147个自由度上337.2 ##多重r平方:0.3876,调整后的r平方:0.3751 ## f统计:31.02上3和147 DF, p值:1.357e-15

例3:易于练习活动的掩码。

最后但并非最不重要的是,我最喜欢的用法是面具()隐藏代码段的函数。这个功能最初是由Alison Hill提出的,它很快就成为我在包中最常用的功能!

假设我在教书ggplot,我想让学生理解图形语法框架。我希望他们能够练习识别剧情的几个关键元素:

  • 哪些变量被用于哪些美学元素。
  • 使用哪些几何图形来绘制图形。
  • 哪一个theme_ * ()函数被应用到图中。

因此,我可以创建以下挑战:根据图形输出填充代码空白。

库(ggplot2

baby_names % > %
ggplot(aes (y =, x =, color =) +
geom_() +
geom_() +
theme_()

在这里我隐藏了天赋块,这样你就可以看到学生做的练习。这是它的样子:

' ' ' {r,回声= FALSE}装修(“阴谋”)% > % flair_rx(“ggplot2 ?”,背景= "粉红色")% > %面具(“计数”)% > %面具("年")% > %面具("性别")% > %面具(“点”)% > %面具(“行”)% > %面具(“光”)' ' '

学习用R编写代码的学生通常很快就会知道怎么做编码、猜测和检查,直到输出与他们想要的匹配。然而,他们能够做到这一点也很重要事先考虑,并预测每段代码将在输出中产生什么影响。

填空活动是一种很好的练习方式,用天赋来掩饰可以让创建这些活动快速简单!

总结

您可以尝试本博客文章中的代码这个RSt英格兰vs伊朗让球udio云项目.一般来说,flair可以用于大多数R Markdown基于html的输出格式,包括像这样的幻灯片制作器ioslides而且xaringan.不幸的是,目前还不可能编织到pdf或MS Word文件的风格格式-尽管我们希望在未来提供该功能。

如果你对未来的天赋能力有任何想法,可以让你的教学和演讲更容易,请不要犹豫在GitHub上提交一个问题,或向我伸出援手个人。

我们希望flair使代码呈现过程更加简单、可复制和令人愉快。

花式表演快乐!

这家伙叫里克·Flair。如果你不知道,现在你知道了。