当前课程知识点:R语言数据分析 >  中部:执具 >  第6章 基础编程——用别人的包和函数讲述自己的故事 >  6.3 站在巨人的肩膀上

返回《R语言数据分析》慕课在线视频课程列表

6.3 站在巨人的肩膀上在线视频

下一节:6.4 控制流

返回《R语言数据分析》慕课在线视频列表

6.3 站在巨人的肩膀上课程教案、知识点、字幕

大家好

欢迎来到《R语言数据分析》课程

今天我们和大家一块交流一个理念

就是R编代码应该站在巨人的肩膀上

伟大的牛顿先生曾经说过

如果说我看得比别人更远些的话

那是因为我站在巨人的肩膀上

好 那对于我们软件产业来讲

是不是也是这样

我们的交互设计之父 Alan Cooper

他怎么说的

伟大的科学学科

就像是站在其他巨人肩膀上的巨人

人们也说过 软件产业就像什么

站在其他侏儒脚上的侏儒

这个剧情反转得是有点快的

那对于我们R语言来讲

究竟是站在巨人肩膀上

还站在侏儒的脚上

听完了刚才Alan Cooper这位先生的话

下面这位先生都忍不住要笑了

他是谁

他是我们这个哈尔·范里安 Hal Varian

他是谷歌的

他这么说的

一旦开始做这个R的编代码

一个非常好的地方是什么

你发现你想要的包基本上都已经有了

那基本上就是属于站在巨人的肩膀之上

也就是说对于R来讲

其实还是应该站在巨人的肩膀上

那好

我们来看看究竟是前面这位交互设计之父说得对

还是我们这个范里安说得对

咱们看看还是回到我们的迷你小案例

我们的迷你小案例里面

除了这个用#号开头的这种注释性的语句之外

里面大量用到了什么

library()加载某个包

以及调用其中的相应的函数

所以我们在编R代码的时候

其实会用到大量的扩展包

以及扩展包里面的函数

那好

现在我将这个我们前面的这个代码

我将其中的扩展包的相应的语句

以及函数调用的相应语句我都圈出来

这时候我们可以考虑一下

假如我现在把这些带背景的

无论是红色背景还是黄色背景

这个无论是包的加载

还是其中包(中)的函数调用

这些语句我抠掉的话

那我们看看还剩下什么

这时候几乎就没有剩下什么

只有几个简单的数据对象的名字放在这

即便是我们自己编写的函数

大家看一下

其实它还里面还是调用了

好多其他的函数是不是

所以说

假如我们是用R语言来编代码的话

你会发现

基本上是应该站在别人的肩膀上

做这个事情 更进一步

而不是说从零开始一步一步来

所以对于R语言的这个编程人员而言

无论你是把自己定位为 数据科学家

还是数据分析工程师

你的定位应该什么

应该是帅才

而不是说所有事情都是从零开始

更多的应该是什么

应该是统率三军

你用别人的包

调用它相应的函数 你来指挥它 你来调度它

来完成你相应的任务

这是我们要做的事情

当然我们也非常理解

就有不少小伙伴 他是希望什么

控制欲极强

希望所有事情都是从零开始

所有事情都是我自己来的

但是其实对于我们真正要编写一个比较复杂的

面对一个复杂的科学问题和工程问题的时候

不可能说所有事情都从零开始

更多应该什么站在巨人肩膀上

调用已有的包和函数完成自己的事情

然后我简单总结了一下

我们R编代码应该是什么

应该是 用别人的包和函数讲述你自己的故事

我们几乎可以将这句话视为什么

R编代码的第一法则

或者说是黄金法则

这句话其实分成两部分讲

首先是用别人的包和函数

也就是说你得找得到别人包

找得到相应的函数

然后关键还是要讲你自己的故事

利用已有的什么

实现的功能

然后怎么样将你自己的任务完成

开展自己的研究 建立自己的模型

得到你自己最后的结论

也就说有一套自己的逻辑

讲述你自己的故事

假如这里面函数没有的话

可能你自己编写一个函数

更多的是什么

更多的利用别人包和函数

好 那这个R编代码

也就是说我们在后续内容里面也是分两部分来讲

今天我们先把前半部分先讲清楚

怎么来利用别人包和函数

重点是如何能找到这个包

能找到相应的函数

我们可以看一下

上这个R的官网的话

你会发现

目前的包有多少个呢

12583个包

当然

因为我这个课

咱们这个包还在不断更新

还在不断增加

假如你在看这个课的时候

看视频的时候

可能数量比这个还多

假如我现在想从这1万多个包里面

找到我自己想要的那个包

那就几乎是大海捞针是不是

所以我们如何来找这个包

尤其作为一个开源的这么一个生态的话

是非常关键的

我自己简单总结了一下

假如我想从这个1万多个包里面找到

想要的包的话

有这么一些方法

第一种

上百度 得幸福

当然我这绝对不是给某个搜索引擎做广告

不是这意思

其实你可以利用任意一个

你自己用的比较顺手的搜索引擎都可以

因为R这几年越来越火

要是你前几年的话

比如说那个零几年的时候

那个时候你想在一些搜索引擎里面

找到R相关的内容那非常难

因为R本身也不能作为关键字

就是说它是26个字母之一

你想搜索相应的

比如说针对某个问题情境

我来搜用什么包来实现它 很难

但这几年比较火

然后的话你通过一些搜索引擎

基本上将相应的问题敲进去的话

关键字敲进去

基本上都能找到

哪些包哪些代码如何实现它

这是应该相对比较便利的一个方法

然后第二个强烈推荐什么

逛论坛 找答案

这个论坛

前面其实已经提过

Stackoverflow

这个非常好

这个论坛几乎可以说

假如这个论坛关闭的话

很多程序员

不仅仅R的

包括其他的什么Python Java等等

很多程序员就不知道怎么写代码

因为我们有很多很多的问题

我们都需要在这个网站里面

找到我们自己想要答案

我们看这个论坛

这个论坛

假如我搜索的时候

最好 加一个 [r]

用方括号括起来 [r]

就表明什么

表明我所搜索的问题都是与R相关的

那目前来讲有多少与R相关的问题

大家数一下

有23万个问题

所以毫无疑问我们通常在

学R的时候

日常碰到的一些问题

几乎可以说绝大部分都在这里面

已经有人问过了

而且很大一部分都已经解决了

所以这一个论坛应该说

可能比你请教某一个人

或者某一个老师

可能他给你答案可能提供更多的信息

更容易找到答案

所以这个论坛是强烈建议大家

多关注一下的

有问题的时候来上来问

没问题的时候多逛一逛

这是这个论坛

第三种 sos

当然这个sos并不是我们求救信号

sos指的什么

sos是指一个扩展包

这个时候我可以先安装这个包

然后再加载它

先安装这个包

安装包的过程

我们可以通过

这个比如你用RStudio的话

它里面专门就有安装包的相应的一些功能按钮

当然也可以通过代码来写

比如说install.packages()

通过这个代码写也可以

安装完之后加载

然后利用其中的什么

利用其中的findFn()这个函数我们一看

毫无疑问题我在查找函数吧

针对某一个主题来查找函数

这个功能非常非常强大

就是因为它是相当于直接搜索到

我们整个这个有哪些包

它实现了相应的功能

哪些函数实现你想要的功能

基本都能找得到

我们看一下

假如我们现在搜索一个深度学习的

deep learning

将它作为关键词的话

看看R里面有哪些包和函数

与这个深度学习相关

我们目前比较火的这个深度学习

那好你会发现什么

它给你列出来

包是哪个包相应函数是哪个函数

然后包括他前面一些得分也有

一般来讲排在前面是值得我们推荐

所以这个包其实也是非常有利于我们来

找到我们相应的包以及相应的函数的

好 这是我们的第三种方法

我们再看第四种

第四种就是 强烈推荐这个

Task Views

按理说这应该是排在第一的

为什么

因为Task Views是属于什么

是属于R的官方的一个文档

官方对整个这个包相应的

一些函数进行一个系统的梳理

相对比较系统的梳理

它当然不能包含这1万多个包

那肯定不可能

但是对里面一些非常经典的

非常强大的包其实都已经按照主题进行梳理了

应该说它是最正统的

可以鸟瞰我们整个R的全景

尤其对于初学者来讲

比如说我们感兴趣的主题

比如说我们这个机器学习或者聚类等等

它其实都有相应的主题

在相应的主题里面都将我们典型的

包和函数进行了梳理

比如说我们以这个机器学习为例

它其实专门里面有什么

一个机器学习及统计学习

或者说统计机器学习

有这么一个主题

它下面就将什么

相应的一些包和函数都给你做了梳理

而且描述得非常简单明了

所以对于初学者来讲

这个非常宝贵的资源千万不要给浪费了

就是Task Views

当然我们在写具体代码的时候

因为它的实用性

比如说便捷性

可能不一定能和前面的那几种方法相比

不一定有前面那么实用

所以我们才把它摆在第四位

第五位的话基本就不用解释了

就专注于某个领域

要慢慢的积累

其实不管你用前面那种方法

它基本上都有遗漏的地方

当你专注某个领域积累一段时间之后

你知道这个领域相应的解决什么问题

用相应的包 可能积累得越来越多了

我们应该讲R上手非常容易

R的语法非常简单

但这就像下棋一样

规则很简单

但你想把它精通就很难

这个需要一个时间的积累

所以这是第五种

其实也属于一个不是方法的方法

这就是我们从这个大量的

我们开源的社区里面

如何找到我自己想要的包

这么几种典型的方法

我们来看一下

就针对我们这个机器学习 数据挖掘而言

目前有哪些比较典型的包

当然这个网站大家可以上来看一下

它其实也是对之前的很多包它的下载情况

它的问问题的情况都进行了一个统计

比如说有caret

这是一个分类回归的框架的包

这是强烈推荐的

再比如说随机森林

这个专用的randomForest

e1071

这里面有好多什么

机器学习相应的一些函数

比如支持向量机

朴素贝叶斯等等都有

比如rpart 这是分类回归树的

nnet是什么

是我们那个神经网络等等

就类似这些

大家可以参考一下

尤其是我们刚才讲的这个caret的这个包

其实是强烈推荐的

一旦我们找到某个包之后

安装完之后

其实我们可以通过什么

library()这个函数来加载它

比如说这个caret的这个包里面

我们可以看看它 目前支持多少分类回归模型

可以调用这个modelLookup()

这个函数来看

目前这个包里面支持的分类回归模型达到多少

237种

当然这里面是不同的算法

它有一些模型相对比较相近的

假如我们说归大类的话

这个分类回归模型可能十几种

或者是这么一个体量

但是假如说分类回归具体的算法模型的话

可能是200多种

也就是说数以百计

也就是我们在接触了机器学习数据挖掘之后

对这个分类回归的模型

我们应该心中有数了

它的体量可能数以百计的

咱们再看看

GitHub

我们前面也强调推荐了

一个是StackOverflow

还有一个是Github

我们都强调推荐两个网站

这里面其实也有什么

在Github里面它表现非常好的一些包里面也有统计

也可以供大家参考

比如说个xgboost等等

以及类似这种

用得非常多的

应用非常广泛的ggplot2

这个用来绘图的

可视化的

那包和函数找到之后我怎么使用它

当然这个语法非常简单是什么

就是由这个函数名后面加括符

交给它相应的参数也得到相应的结果

这就是函数调用的过程

那具体某个函数怎么使用

这里面就涉及一个帮助文档的问题

举个例子

比如说我们现在看到这么一行代码

xm一个小于号 一个减号

c然后后面一大堆的什么姓名

比如说周黎 汤海明 舒江辉 等等

那这个时候我们一看这个代码

毫无疑问它是一个函数调用的过程

一个函数名称是c() 然后后面是括符

是它的什么

是它相应的这个参数

然后赋值

这其实很形象的一个赋值的符号

将这个交给姓名xm这个变量

交给这个对象对吧

交给这个数据对象

那好我们这个c()这个函数究竟是怎么使用

那这时候我们就涉及一个帮助文档问题

帮助文档当然有很多调用方法

但最简单方法是什么

在前面加一个问号

把这个函数名放过来

接在后面

然后怎么在控制台里面回车

回车完之后你发现这个c

可不是我们abc的c

它是什么呢

大家一看Combine

怎么样将不同的数值把它组合在一起

变成一个向量或者是列表

所以这个时候其实我们一旦打开帮助文档之后

对这个函数如何使用这个函数的意义

其实我们就很清楚了

包括这个函数一个最基本的解释

比如说这个函数那个调用的过程

它参数怎么设置

以及一些具体的一些细节

细节的说明说得很清楚

包括它的返回值等等

在我们这个帮助文档里面说得非常清楚

以及我们这个函数的一些示例

一些示例

其实我们都可以照葫芦画瓢

很多时候我们接触到一个新的包

以及里面一些函数的时候

我们可能刚开始不知道怎么用

那我们经常就把这个代码怎么拷过来

先改一改

照葫芦画瓢

这样可能更加有利于我们什么

掌握这里面的相应的包和函数的使用

好 以上就是我们关于这个如何找到这个包

以及找到包之后

里面的函数如何使用

一个最简单的方法就是查帮助文档

利用好这个帮助文档

好前面就将我们这个

R语言数据分析

R语言编代码

一个最基本的理念进行简要的讲解

当然我们只是讲了前半句话

我们说R编代码就是用别人包和函数

讲述自己的故事

那如何讲述自己的故事

如何写自己的一套逻辑

我们在接下课程里面再详细展开讲

本次课到此结束

谢谢大家

R语言数据分析课程列表:

上部:问道

-第1章 气象万千、数以等观

--第1章 气象万千、数以等观

--第1章 作业

-第2章 所谓学习、归类而已

--2.1 所谓学习、归类而已(I)

--2.2 所谓学习、归类而已(II)

--2.3 所谓学习、归类而已(III)

--2.4 所谓学习、归类而已(IV)

--第2章 作业

-第3章 格言联璧话学习

--第3章 格言联璧话学习

--第3章 作业

-第4章 源于数学、归于工程

--第4章 源于数学、归于工程

--第4章 作业

-讨论题

--如何发挥人工智能的头雁效应

中部:执具

-第5章 工欲善其事、必先利其器

--第5章 工欲善其事、必先利其器

--第5章 作业

-第6章 基础编程——用别人的包和函数讲述自己的故事

--6.1 编程环境

--6.2Mini案例

--6.3 站在巨人的肩膀上

--6.4 控制流

--6.5 函数(I)

--6.6 函数(II)

--第6章 作业

-第7章 数据对象——面向数据对象学习R语言

--7.1 向量与因子(I)

--7.2 向量与因子(II)

--7.3 矩阵与数组(I)

--7.4 矩阵与数组(II)

--7.5 列表与数据框(I)

--7.6 列表与数据框(II)

--第7章 作业

-第8章 人人都爱tidyverse

--第8章 人人都爱tidyverse

--第8章 作业

-第9章 最美不过数据框

--第9章 最美不过数据框

--第9章 作业

下部:博术

-第10章 观数以形

--10.1 一维数据空间(I)

--10.2 一维数据空间(II)

--10.3 二维数据空间

--10.4 高维数据空间

--第10章 作业

-第11章 相随相伴、谓之关联

--11.1 导引

--11.2 关联规则(I)

--11.3 关联规则(II)

--11.4 关联规则(III)

--第11章 作业

-第12章 既是世间法、自当有分别

--12.1 导引

--12.2 近邻法(I)

--12.3 近邻法(II)

--12.4 决策树(I)

--12.5 决策树(II)

--12.6 随机森林

--12.7 朴素贝叶斯

--12.8 逻辑斯蒂回归

--12.9 人工神经网络(I)

--12.10 人工神经网络(II)

--12.11 支持向量机

--第12章 作业

-第13章 方以类聚、物以群分

--13.1 导引

--13.2 划分方法

--13.3 层次方法

--第13章 作业

-第14章 庐山烟雨浙江潮

--第14章 庐山烟雨浙江潮

--第14章 作业

6.3 站在巨人的肩膀上笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。