如何使自己的职能GGPLOT2

信息世界|2019年7月24日

看看使用ggplot2、dplyr和其他tidyverse包函数生成自己的函数是多么容易——不需要担心引用和非引用的列名!多亏了最新版本的rlang包,tidy的计算现在就像双花括号一样简单。

版权©2019Raybet2

嗨。我是IDG通信的Sharon Machlis,现在为您带来的是《用R做更多的事:创建自己的ggplot2函数》的第32集——不用担心引用或未引用的列名。
Tidyverse包,比如GGPLOT2和dplyr有一个语法,这通常是非常方便的:你不必把列名在引号。就像你在这里看到这个dplyr过滤器代码。列名,MPG,是不带引号的。
但是,如果您想使用tidyverse函数来编写自己的R函数,那么这个特性并不方便。这是因为“普通”的R通常需要引用的列名,而tidyverse通常不需要。
但是有一些好消息:由于最新版本的rlang包,这个问题现在有了一个简单的解决方案。这意味着现在很容易为您喜欢的定制图编写自己的ggplot函数。
让我举个例子
我将使用Zillow提供的数据,这些数据包含了美国各个城市社区的房屋价值中值。最后一行代码使用了基本R的下载。从Zillow下载CSV的文件函数。我不打算运行最后一行,因为我已经下载了文件。)
我的最后一个数据准备步骤:导入CSV到r。我使用里约热内卢包,因为我喜欢里约热内卢,但你可以使用其他东西,如read_csv或fread。然后我只过滤波士顿所在城市的行。
好。这段代码的其余部分创建了一些自定义我经常喜欢用一个水平条形图。我命令从最高到最低值,酒吧,黑色勾勒它们,并以蓝色着色他们。我也改变了默认的灰色背景。现在,如果我想要什么,使我自己的函数生成任何数据帧像这样的图表?与输入参数的函数中的数据帧的名称中,x列中,y列,图形标题?
这里有一个尝试创建一个名为mybarplot与我想要的自定义功能。但是,如果我尝试使用不带引号的列名来运行它,就像我跟ggplot做,我得到一个错误(运行线11)。如果我引用的列名(运行线13) - 好吧,我得到一个图表,但不是一个我想要的。这是基础R的问题报·需要的列名,而ggplot没有。
旧的rlang包对此有一个多步骤的解决方案。当前的解决方法是使用一个名为tidy求值运算符的新运算符——双花括号。您只需将它放在函数中不带引号的列名周围,就完成了!

至少需要rlang包的0.4.0版本才能工作。在我录制这个视频的时候,它是在CRAN上的,但是你需要在安装的时候从源代码编译它。

在这里,我加载rlang,然后调整我的barplot函数,这样每当我在函数中引用ggplot中的列名时,我都用双花括号括起来——“花括号”是包创建者引用它的方式。其他的都是一样的。

现在我可以调用函数了。而且,就像tidyverse函数一样,我不需要把列名放在引号中。它的工作原理!

我仍然可以使用ggplot命令来调整函数创建的图形。
在这里,我救了我的barplot功能给一个变量我打电话mygraph的结果。它将显示像任何其他ggplot对象。
从第4行开始,我对图形进行了更多的定制——geom_text()行将值添加到每个条上;主题代码设置图形标题大小。
现在您知道了如何将您最喜欢的ggplot图形保存到您自己的自定义函数中,以供将来使用!
这一集就到这里,感谢收看!要了解更多关于R的技巧,请前往go。infoworld。com网站上的“用R做更多”页面,除R外其他字母都是小写的
你也可以在YouTube IDG技术谈话频道找到更多的R播放列表。
希望下一集再见!
受欢迎的
从IDG.tv精选视频