>> [音乐播放]
DUSTIN TRAN：你好。
我的名字的达斯汀。
所以我会介绍 在R.数据分析
我自己只是一点点。
我目前的研究生 该工程与应用科学。
我研究的交集 机器学习和统计
因此在研发数据分析 真正的基础是什么
我每天。
>> R是特别 良好的数据分析
因为它是非常好的原型。
通常，当你做一些 数据分析，很多的问题的
要认知。
所以你只是想有 一些很好的语言
是做刚刚好 内置函数，而不是
具有处理低电平的东西。
所以，在开始的时候，我只是去 介绍什么是R，为什么会
要使用它， 然后去到过的一些演示，
而只是去从那里。
>> 那么，什么是R'
R的只是一个语言开发 统计计算
和可视化。
所以，这是什么意思的是， 这是一个非常优秀的语言
对于与处理任何诸如此类的事情 不确定或数据可视化。
所以，你拥有所有这些 概率分布。
有将要 内置函数。
你也将有出色 绘图包。
>> Python是互相竞争 语言数据。
还有一件事，我觉得是R 为更好的为可视化。
所以你会在演示照见 也仅仅是一个很直观的语言
这只是工作得非常好。
它也是免费和开源的，因为 是什么好语言，我猜。
>> 在这里，一堆刚 关键字扔向你。
它是动态的，这意味着如果你有一个 分配到一个对象的特定类型
比将只在飞行修改。
这是懒惰所以它的聪明 它是如何做计算。
功能意味着它可以真正操作 基于关闭功能等anything--
任何形式的操纵你 这样做，它会根据关功能。
>> 所以二元运算符，例如， 只是固有的功能。
和一切 你要做的是
将要流掉函数本身。
然后面向对象的为好。
>> 因此，这里是一个XKCD情节。
这不仅是因为我觉得自己像 XKCD是至关重要的任何形式
介绍的，但由于 我喜欢这种感觉真的
锤点，很多的 当你正在做一些数据的时间
分析，问题是不 与其说它运行的速度有多快，
不过多久，它会 带你到编程任务。
所以这里只是分析是否 策略a或b是更有效的。
这将是 你是什​​么
要处理很多在 那种低层次的语言
在那里你正在处理的赛格故障， 内存分配，初始化，
甚至使内置函数。
而这个东西是所有处理 非常，非常优雅的R.
>> 所以只是这一锤 点，最大的瓶颈
将是认知。
这样的数据分析是一个非常困难的问题。
无论你正在做的 机器学习或者你
这样做只是某种 基本数据探索，
你不希望有 取一个文件
然后编译 每一次你的东西
想看看一列的样子， 什么特定的条目以矩阵
看起来像。
所以，你只是想有 一些非常漂亮的界面
您可以运行一个简单的函数 该指数的任何
你想从那里只要运行它。
你需要域名 特定语言这一点。
和R将真正帮助你定义 问题和解决它以这种方式。
>> 因此，这里是显示编程 的R普及，因为它走了一段时间。
所以你可以看到，像2013年或 所以它只是炸毁了极大。
这一直只是因为 在科技产业的巨大发展趋势
关于大数据。
另外，不只是该技术 行业，但真正
任何行业that--因为 很多行业
是那种根本 试图解决这些问题。
通常，你可以有一些不错的 测量这些问题的方式
甚至定义它们或 利用数据解决这些问题。
所以我觉得现在R是第11 在TIOBE最流行的语言
和它的增长至今。
>> 因此，这里的一些 R的特点，具有
包的巨大数量和 所有这些不同的东西。
所以，任何时候你有一个 某些问题，最
时间R将有 该功能为您服务。
因此，无论你想 建立某种机
所谓的学习算法 随机森林或决策树，
甚至试图采取的平均 一个函数或任何这方面的东西，
R将有。
>> 如果你这样做你关心 优化，一件事是很常见
在这之后，你就大功告成了原型 某种高级语言，
你会抛出in-- 你只会端口超过
一些低级语言。
有什么好的R是，一旦你 做原型，你可以运行C ++，
或Fortran或任何这些 较低水平的人直接进入R.
所以，这人真的 关于R很酷的功能，
如果你真的关心 优化点。
>> 而且它也确实不错 为Web可视化。
所以D3.js，例如，是 我想另一个研讨会
我们今天提出。
这是真正的真棒 做交互式可视化。
和D3.js假设你有 要绘制某种数据的
和R是能够做一个伟大的方式 导出之前的数据分析
交给D3.js甚至只是运行 D3.js命令为R本身，
以及所有这些 其他库也是如此。
>> 所以这是刚刚出台 什么是R和为什么你可能会使用它。
所以希望，我已经 相信你的东西
大约只是想看看是什么样子的。
所以，我要继续前进，经过 关于R对象的一些基础知识
什么，你真的可以做到。
>> 因此，这里仅仅是一个 一堆数学指令。
所以说，you're--你想建立 语言自己只是想和你
有一堆不同的工具。
操作任何一种你认为你会 要的是几乎将要在R.
>> 因此，这里是2加2。
这是2倍圆周率。
R有一堆内置常量 你会经常使用如pi，E。
>> 然后，这里是7加 runif，所以runif 1。
这是一个功能，是生成 1无规均匀从0到1。
再有3到4个电源。
有平方根。
>> 有日志。
所以日志会做基地 指数本身。
然后，如果你指定一个基地的话， 你可以做任何基地你想要的。
然后这里有一些其他的命令。
所以，你有23 MOD 2。
那么你有剩余。
那么你有科学 如果你还记法
要做到这更多， 更复杂的事情。
>> 因此，这里是分配。
在这样的典型任务 R被用箭头完成
所以它的不足，然后连字符。
所以在这里我只是分配 3向变量val。
>> 然后我打印出来VAL 然后打印出3。
默认情况下，在研发解释，它 将打印出来的东西你
所以你不必指定打印VAL 任何时候你要打印的东西。
你可以做VAL和 然后它会为你做的。
>> 此外，您还可以使用等于技术上 作为赋值运算符。
有轻微的微妙之处 利用箭头之间
操作员和等于 运营商的任务。
主要是按照惯例，每个人都 将只使用箭头操作符。
>> 在这里，我这个分配 斜符号称为1结肠癌6。
这产生从1到6的载体。
这真的很好，因为那时 你刚才分配向量VAL
并且工作本身。
>> 因此，这已经从去 single--一个非常直观的数据
只是双重结构 一些类型的类型的插入载体
并会收集所有 标值给你。
因此，从标会后，你 具有R的对象，这是一个矢量。
向量是任何形式的 收集同一类型的。
因此，这里有一堆载体。
>> 因此，这是数字。
数字是说双R的方式。
因此在默认情况下，任何 号将是一个双。
>> 所以，如果你有C 1.1，3， 负5.7，则c是一个函数。
这样可以将所有三个 号码到载体。
而这将be--所以如果 你注意到3本身，
通常你会假设 这是像的整数，
但由于所有矢量 是相同的类型，
这是双打的向量 或数值在此情况下。
>> RNORM是一个函数，产生 标准正常variables--
或标准正常值。
和我指定他们两个。
所以我做RNORM 2，分配，要 开发者，然后我打印出开发者。
因此，这些都是只有两个 随机正常值。
>> 如果你这样做，然后INTS 你关心的整数。
所以，这只是关于内存 分配和节省内存大小。
所以，你将不得不追加 您的号码被资本L.
>> 在一般情况下，这是 的r历史符号
对于一些所谓的长整型。
所以大多数的时候，你会 是处理双打。
如果你曾经稍后会 在优化你的代码，
你可以只添加这些L的 之后或期间，
如果你像预知什么 你要做这些变量。
>> 因此，这里是一个字符向量。
所以，再一次，我串联 三根弦这段时间。
请注意，双串和 单一字符串的R.同
所以，我有亚瑟和马文的等 当我打印出来，所有的人
要显示双字符串。
如果你也想有 双或单串
在你的角色，那么你就可以 无论你的交替串。
>> 所以马文的对 第二元件，这是
去展示 - 你 只是有双串
然后一个字符串 所以这是交替的。
否则，如果你想使用双 字符串操作在双串
当你宣布它，然后 你只需要使用转义符。
所以，你要做的双反斜线字符串。
>> 最后，我们还 有逻辑的载体。
所以logical--所以TRUE 和FALSE，他们是
将全部大写。
然后，再一次，我串联 他们，然后分配他们的bool。
所以布尔变量是要告诉 你TRUE，FALSE和TRUE。
>> 因此，这里是矢量的索引。
所以，在开始的时候，我 我采取了function--
这就是所谓的序列 - 序为2至12。
而我2采取序列。
所以它会做 2，4，6，8，10和12。
然后，我索引 以获得所述第三元件。
>> 所以有一点要记住的是 是R指标从1开始。
所以丘壑3是要给 你的第三个元素。
这有点与其他的不同 它从零开始的语言。
所以在C或C ++，例如，你 将得到的第四元素。
>> 这里是丘壑3〜5。
这么一件事是 很酷的是你
可以在里面生成临时变量 然后就用它们的飞行。
因此，这里是3〜5。
所以我生成一个向量 3，4和5，然后
我索引获得第三， 第四和第五元素。
>> 所以同样，你可以 只是做摘要
任何类型的载体的 ，让你的索引。
因此，这里是丘壑，然后 第一，第三，第六元件。
然后，如果你想 做一个补充，
所以你只要做减号 事后那会
给你的一切，是不是 第一，第三，或第六元件。
因此，这将是4，8和10。
>> 如果你想获得 更先进的，
您可以连接布尔向量。
因此，这指数是要给你 长度为6的这个布尔向量。
所以，代表TRUE逗号3。
这将重复为TRUE三次。
因此，这会给你一个 矢量TRUE，TRUE，TRUE。
>> 代表FALSE 4--这是要给你 的FALSE，FALSE，FALSE，FALSE的向量。
然后C是将串联 这两个布尔在一起。
所以，你会得到三个 TRUEs然后4 FALSEs。
>> 所以，当你的索引丘壑，你 会得到TRUE，TRUE，TRUE。
所以这是怎么回事说是， 我想这三个要素。
然后FALSE，FALSE， FALSE，FALSE是怎么回事
说没有，我不希望这些元素 所以它不会来回报他们。
>> 我想有实际上在这里一个错字 因为这是说重复TRUE 3
重复FALSE 4，和技术上，你 只有六个要素如此重复FALSE，
它应该是重复FALSE 3。
我觉得R也足够聪明，这样的 如果你只是指定4在这里，然后
它甚至不会出错了。
它只是给你这个值。
所以它会忽略了第四FALSE。
>> 因此，这里是矢量分配。
所以set.seed--这只是设置 种子伪随机数。
所以我设置的种子 42，这意味着如果我产生
三个随机正常 值，然后如果你
运行set.seed你自己 电脑使用相同的值42，
然后您还可以获得 同样的三个随机法线。
>> 因此，这是真的好 可重复性。
通常情况下，当你做一些 排序科学分析，
你想设置的种子。
这样，其他科学家可以只 重现你已经完全相同的代码
这样做，因为他们将有确切 相同的随机变量that--或随机
你已经取出，以及价值观。
>> 这样一来，矢量分配 这里示出了瓦尔斯1至2。
因此，需要前两个元素 丘壑，然后将它们分配给0。
然后，你也可以只是做了 类似的事情与布尔。
>> 所以瓦尔斯不等于0--该旨意 给你一个矢量FALSE，FALSE，TRUE
在这种情况下。
然后，它会说什么 那些是真实的指标，
然后它会分配一个5。
因此，需要第三个元素 在这里，然后将其分配给5。
>> 这是非常好的 相比低级语言
在那里你必须使用循环 做这一切矢量的东西
因为它只是非常直观 这是一个单一的单行。
这有什么了不起 矢量符号
是，在R，这些都是排序 内置使他们几乎一样快
因为这样做在一个低级语言如 反对做一个for循环在研发
再有它做 动态索引本身。
而这会比做慢 这种量化的东西
它可以并行，在那里做 它这样做的线程基本。
>> 因此，这里是矢量操作。
所以我生成一个值1到3， 分配给该VEC 1，3至5，VEC2，
加在一起。
它增加了他们的组件，因此明智的 它是1加上3，2加4，等等。
>> VEC 1次VEC2。
这乘以2 明智的价值观的组成部分。
所以它的1倍3，2次 4，然后3次5。
>> 然后，同样，你也可以做 comparisons--逻辑比较。
因此，它是FALSE FALSE TRUE在这 情况下，因为1是不大于3，
图2是不大于4。
这是，我猜，另一个错字，3 绝对不大于5。
是啊。
所以你可以做所有 这些简单的操作
因为他们的继承 从自己的类。
>> 所以这只是个载体。
这就是那种最根本的 ř对象，因为给定的载体，
你可以构建更高级的对象。
>> 所以这里有一个矩阵。
这在本质上是抽象 一个什么样的矩阵本身。
因此，在这种情况下，它的三个不同的 矢量，其中，每一个是一列，
或者你可以考虑 因为每一个是一排。
>> 所以，我存储从1矩阵 9，然后我指定3行。
因此，1至9会给你一个向量1， 2，3，4，5，6，和一路9。
>> 有一件事也记住的是， ř专卖店在列的主要格式值。
所以，换句话说，当你看到1 至9，它要储存them--
这将是1，2， 在第一列3，
然后它会做4，5， 在第二列6，
然后7，8，9，在第三列中。
>> 这里有一些其他的 您可以使用常用功能。
因此昏暗的垫子，这会给你 矩阵的尺寸。
它会回报你 维度的向量。
因此，在这种情况下，因为 我们的矩阵为3×3，
它会给你一个 数字矢量是3 3。
>> 这里只是展示 矩阵乘法。
所以通常情况下，如果你只是做 asterisk--所以垫星号mat--
这将是 组件明智的操作
或者什么所谓的阿达玛产品。
所以它会做的每 元素组件明智的。
但是，如果你想 矩阵multiplication--
所以第一行时间乘以 第二矩阵的第一列
所以on--你会使用 这个百分比操作。
>> 和垫吨只是一个 操作转。
所以我说，走在转 的矩阵，由矩阵乘以
本身。
然后它会 回报给你另外3
3矩阵，显示 你想要的产品。
>> 所以这是矩阵。
这里是所谓的数据帧。
数据帧，你能想到的作为 一个矩阵，但是每列本身
将是不同类型的。
>> 那么，什么是真正酷的数据 帧是在数据分析本身，
你将拥有这一切 异构数据，所有这些真的
乱七八糟的东西，其中每一列 本身可以是不同类型的。
所以在这里我想说的创建 数据帧中，执行整数1至3个，
然后也有一个特征向量。
这样我就可以通过指数 这些列
然后我会得到的值本身。
而且你还可以做一些 对数据帧的操作。
和大部分的时间你的时候 进行数据分析，或某种
预处理，你会 与这些数据结构工作
其中每个列将 是不同类型的。
>> 最后，所以这些基本上都是刚 在R.列出四个基本目标
将只收取任何 你想要的其他对象。
因此，将这种存储到一个 您可以轻松地访问变量。
>> 所以在这里，我要带一个列表。
我说的东西等于3。
所以，我要在一个元素 列表中，这就是所谓的东西，
而这将有值3。
>> 我还可以创建一个矩阵。
因此，这是1至4和端排 等于2，所以由2矩阵2。
此外，在列表中，这就是所谓的垫子。
moreStuff，一个字符串， 甚至另一个列表本身。
>> 所以这是一个列表，是5和熊。
因此它具有值5和它 有字符串熊
和它的内部的列表的列表。
所以，你可以有这些 递归的东西在哪里
你有another--一个 在类型类型。
所以同样，你可以有一个矩阵 在另一个矩阵等。
和一个列表仅仅是一个很好的方法 收集和汇总的
所有这些不同的对象。
>> 最后，这里是以防万一帮助 这是刚刚经历了非常迅速。
所以，任何时候你困惑 关于某种功能，
你可以做到这一点的功能帮助。
所以你可以做帮助矩阵 或问号矩阵。
并帮助和问号都 只是简写同样的事情
所以他们的别名。
>> 流明是一个函数，它 只是做一个线性模型。
但如果你只是不知道怎么说 作品中，你可以做流明帮助
而且会给你一些 这类文档的
看起来有点像 在Unix中，在手册页
你有一个简短的说明什么 确实如此，亦是它的参数是，
它返回，并就如何只提示 使用它，并且一些实施例也是如此。
>> 因此，让我继续前进，显示 使用R. OK了一些演示。
于是我去了很 很快就在数据
结构和某种的 op--一些操作。
下面是一些功能。
>> 所以在这里我只是去 来定义的函数。
所以，我还使用 赋值运算符在这里，
然后我说 声明为一个函数。
而它需要的x值。
所以，这是你想要的任何值 而我要返回X本身。
因此，这是身份的功能。
>> 什么是酷这个 相比其它语言
和另一低级别 语言是X
可以是任何类型本身 它会返回一个类型。
所以，你可以imagine--所以让 我只想赶紧跑了。
抱歉。
>> 这么一件事我还要提到 就是这个编辑器，我使用
被称为rstudio。
这是所谓的IDE。
还有一件事是 非常好的关于这个
的是，它包含了很多 你想通过自己做R中的事情
只是很直观。
>> 因此，这里是一个解释控制台。
所以同样，你也可以得到这个 只是做一个大写R.控制台原料
而这正是 同样的事情作为控制台。
所以，我可以做ID功能X，X，X。
和then--然后该 将被罚款本身。
>> 所以rstudio是伟大的 因为它有控制台。
它也有文件 你想运行。
然后它有一些变数 您可以在环境中看到的。
然后，如果你有 做图，那么你
可以只看到它在这里，相对于 管理所有这些不同的窗口
由自己决定。
>> 其实，我个人用Vim，但我 感觉rst​​udio是优秀的只是
为得到一个好主意 如何使用R.一般，
当你试图 学习一些新的任务，
你不想处理 太多的事情一次。
所以，R是只是一个very-- rstudio 是学习R的非常好的方法
而无需处理 所有这些其他的东西。
>> 所以在这里我跑ID打招呼。
这将返回打招呼。
编号123。
这里是整数的向量。
那么同样的，因为你可以 采取某种价值，
你可以做回国ID X所以它返回1234和5。
>> 并让我告诉你， 这确实是一个整数。
同样，如果你这样做类 ID X，这将是整数。
然后，你也可以 比较这两个，这是真的。
所以我检查，如果ID x的 等于等于x和通知
它给你两个TRUEs。
因此，这是不是说有 两个对象相同，
但是每个条目的 在矢量是相同的。
>> 这是bounded.compare。
因此，这是稍微复杂 在于：它具有一个if条件和其他
然后需要两个 在一个时间参数。
所以x是任何类型。
而且我说这 第二个参数是一个。
这可以是任何为好。
但默认情况下，它会采取 5，如果你不指定任何东西。
>> 所以在这里我要说 如果x大于一。
所以，如果我不指定，它 说，如果x大于5，
然后我会返回TRUE。
否则，我将返回FALSE。
因此，让我继续前进，定义这个。
>> 现在我要去 运行bounded.compare 3。
所以说，在3少 than--比5 3更大。
不，这不是那么FALSE。
>> 和bounded.compare 3，我要去 用等于2来比较它。
所以，现在我要说的是，现在我 想别的东西。
所以我要去说，你应该是2。
>> 我可以做这样的 符号或者我说等于2。
这是一个更可读 在当你
看着这些真的 复杂功能
采取多种arguments--这 可几十oftentimes--只是说
A等于2是更可读的 你这样以后在未来
你会知道你在做什么。
>> 因此，在这种情况下，我 俗话说比2 3更大。
是的。
同样，我也只是删除 这一点，并说，比2 3更大
其中a等于2。
而这也是事实。
是吗？
>> 听众：你 按行执行行？
>> DUSTIN TRAN：是的，我是。
所以我在做什么这里是 采取这一文本document--
什么是伟大的关于rstudio是 我可以只运行一个short--一个快捷键。
所以我在做控制输入。
>> 然后，我走了 文本文档中的行
然后将在控制台中。
所以在这里我要说，bounded.compare 和我做控制-X。
所以，我可以做跑这里。
然后那会走 行，然后把它放在这里。
然后同样地，我可以在这里做运行。
然后它会自顾自地定义 线成这样的控制台。
>> 如果你也注意到了花 括号是有类似于C的语法。
x--如果if条件也 要使用括号，然后
你可以使用别的。
另外一个是，如果别人。
因此，这将是X 等于等于一，例如。
然后我要去 回到这里的东西。
>> 请注意，有两种不同的 这里的东西这回事。
其一是，在这里我指定 返回值TRUE。
在这里，我只是说X。
所以R将通常默认 取最后arguments--
或取代码的最后一行， 这将是它的返回。
所以在这里，这是相同的 事情做回X。
>> 而刚刚给你看。
然后，它会工作就是这样。
因此，让我继续这样做。
>> 所以，如果别的。
真的，我可以返回 什么我想。
所以我甚至不有 返回布尔所有的时间，
我可以返回别的东西。
所以我可以做回熊。
>> 所以，如果x等于等于， 它会返回熊。
否则，它会返回TRUE。
我也可以做一个向量 还是真的什么。
>> 与通常静态 类型化的语言，
你必须在这里指定一​​个类型。
并发现它可以只是任何东西。
R是智能不够，它 只是做到这一点，它会正常工作。
>> 因此，让我定义这个。
Unexpected--哦对不起。
这应该是一个大括号在这里。
好不好。
酷。
行。
所以，现在让我们来比较3和等于3。
所以应该return-- yeah--值熊。
>> 所以，现在更普遍的是像 那么其他的数据结构。
所以，你有这个功能。
这是去上班任何形式的 ，价值就像3或任何数字
换句话说，双重。
>> 但对于像一个载体。
所以，如果你do--所以我会发生什么 要分配VAL，比方说，4至6个。
所以，如果我回到这，这 为4，5，6的载体。
>> 现在，让我们看看会发生什么 如果我做bounded.compare VAL。
因此，这将会给你15 1251。
因此，换句话说，它说 如果你看一下这个条件
所以说，x是少 比什么的。
因此，这是稍微 令人困惑，因为现在
你只是不知道发生了什么事情。
所以我想一件事是真的 良好只是想调试
是，你可以做val为更大 不是，看看会发生什么存在。
>> 所以val--一个是默认的5等 我们只是做VAL大于5。
所以这是一个矢量FALSE FALSE TRUE。
所以，当你看现在 这一点，这是怎么回事，如果说，
然后它会给予你这个 为FALSE FALSE向量TRUE。
>> 所以，当你通过这个入R，R 不知道你在做什么。
因为它需要一个单一的 值，这是一布尔值，而现在
你给它布尔向量。
因此，通过默认，R是刚 接下来要说什么的挫折感，
我会假设你 要采取的第一个元素在这里。
所以，我要say--我要去 假设这是假的。
所以它会说 不，这是不对的。
>> 同样，这将 是VAL等于等于。
不，对不起5。
而它也将是错误的为好。
所以它会说没有， 事实并非如此，以及因此它的
要返回该最后一个。
>> 因此，这可以是一个好事还是坏事 的事情，这取决于你如何看待它。
因为当你 创建这些功能，
你是不知道发生了什么事情。
所以有时候你会希望有一个错误， 或者你只是想警告。
在这种情况下，R不这样做。
所以，这真的取决于 您可以根据掉什么
你认为语言 应该在此情况下
如果你通过在布尔向量 当你正在做的，如果条件。
>> 因此，让我们说，你有原来的 之一，如果其他人返回TRUE和你
会返回FALSE。
抽象的这么一种方式 这是说我
甚至不需要这个条件的事情。
另一件事，我可以做的就是 返回值本身。
所以，如果你发现，如果你 做val为大于5，
这将返回一个 矢量FALSE FALSE TRUE。
>> 也许这就是你 想要bounded.compare。
要返回布尔向量 它比较每个值
对自己负责。
所以，你可以做bounded.compare 函数x，a等于5。
然后，而不是做 这一点，如果其他条件，
我只是要回 x是大于5。
所以，如果这是真的，那么 它会返回TRUE。
然后，如果它不是，它是 会返回FALSE。
>> 这将工作 任何这些结构。
这样我就可以bounded.compareç1 6或9 然后我会说等于6，
例如。
然后它会 给你正确的布尔
矢量你设计。
>> 所以，那些只是功能 现在让我
告诉你一些互动的视觉效果。
我不认为我实际上有 无线网络连接，在这里，所以让我继续前进
并跳过这个我猜。
>> 但有一点很酷 但是，如果你只是
要测试一堆 不同的数据的命令，
有一堆不同的数据集 那些已经预先加载到R.
所以其中之一是 所谓的虹膜数据集。
这是最知名的1 那些在机器学习。
你通常只是做某种 测试用例，看看你的代码运行。
所以让我们只检查虹膜是什么。
>> 所以这个事情是怎么回事 成为一个数据帧。
而且它是一种长的，因为 我刚打印出来光圈。
它打印出整个事情。
因此它具有所有这些不同的名称。
因此，虹膜是一家集 不同的花。
在这种情况下，它告诉 你它的品种，
所有这些不同的宽度和 在萼片和花瓣的长度。
>> 因此，通常，如果 要打印虹膜，
例如，你不想拥有它 做了这一切，因为这可以接管
整个控制台。
这么一件事是真的 好的是头功能。
所以，如果你只是做头 虹膜，这会给你
第5行，或六，我猜。
然后好了，你 可以直接在这里指定。
所以20--这会给 你的第一个20行。
实际上我是那种 的惊讶，这
给我6所以让我继续前进 并检查iris--或头部，对不起。
在这里，它会给 您的文档
价值头上做什么。
因此，它返回第一个 或最后一个对象。
然后我要去 看一下默认值。
然后它说的默认 法头x和n等于6L。
因此，这将返回前六要素。
同样，如果你在这里看到的，我 没有指定n等于6。
默认情况下它使用6，我猜。
然后，如果我要指定一个特定的 值，那么我可以查看这一点。
>> 所以这是一些简单的命令和 这里的另一个这just--好，
我can--这实际上是 稍微复杂一些，
但是这只是走班 虹膜数据集的每一列。
因此，这将告诉你什么是所有这些 列是在它们的类型的条款。
所以，萼片长数字， 萼片宽度的数字。
所有这些值都只是数字 因为你可以从这个数据
组织这些都是 一切都将数字。
>> 和物种列 将是一个因素。
所以通常情况下，你会认为 这就像一个字符串。
但如果你只是做irisSpecies， 然后我会做的头5，
并且这是要打印 出的前五个值。
>> 然后注意到这个水平。
因此，这是saying--这为R的方式 具有分类变量。
因此，而不是仅仅 具有文字串，
它具有指定的水平 其中，这些东西都是。
>> 所以我们可以说irisSpecies 1。
所以，你想在这里做什么，我 子集这一物种列。
因此，这需要的 种柱中，然后
它的索引来获得的第一个元素。
因此，这应该给你setosa。
它也给你的水平在这里。
>> 所以，你也可以比较 这向字符setosa
而这是不会 为TRUE，因为一个
是一种不同的类型中的另一个。
或者，我想这是真的，因为ř 比这更聪明。
它着眼于这一点，然后 说，也许这就是你想要的。
所以它会说字符 串setosa是一样的这一个。
然后同样，您可以 也正好抓住这些像等。
>> 所以这只是某种 数据集的快速指令。
因此，这里的一些数据的探索。
所以这是一个多一点 涉及数据分析。
这是从一些 集训在研发在伯克利分校。
>> 所以，国外的图书馆。
所以我打算在加载 库，被称为外国人。
因此，这是要给我read.dta 所以假设我有这样的数据集。
这被存储在当前 我的工作控制台目录。
所以让我们只看到了什么 工作目录。
>> 因此，这里是我的工作目录。
和读取点的数据，这 的事情，是说这个文件
位于数据文件夹 这个当前工作目录。
并且read.dta这不是 默认命令。
我想我在装好了。
IEI假设我已经装这。
>> 但如此read.dta不会 是一个缺省的命令。
这就是为什么你将有 在这个库加载package--
这个包所谓外。
如果你没有 包，我觉得
外国是内置的一个。
否则，你也可以 做install.packages
这将安装该软件包。
这会给你R.哦，不。
然后我只是要阻止 这一点，因为我已经拥有它。
>> 但是，什么是真正好的关于R 的是，包管理
系统是非常优雅。
因为它会保存一切 真的很好你。
所以在这种情况下，这将存储 它在，我相信，在这里这个库。
>> 所以，任何时候你想 安装新的软件包，
它只是这么简单 做install.packages
和R将管理所有 包你。
所以，你不必做一下 蟒蛇，在那里你有外包装
像纸经理 你在哪里蟒蛇
您安装doing--的 Python的外面包
然后尝试自己运行它们。
因此，这是非常好的方式。
>> 和install.packages需要互联网。
它需要从一个服务器 和存储库
收集所有的 包被称为CRAN。
你可以指定排序镜 你想从下载的软件包。
>> 所以在这里我采取这一数据集。
我读它使用此功能。
因此，让我继续前进，做到这一点。
>> 因此，让我们假设 你有这样的数据集
你有绝对的 不知道它是什么。
这实际上出现 相当经常在业内
在那里，你只是有这些 吨，吨乱七八糟的东西
他们是令人难以置信的未标记。
所以在这里我有这个 数据集，我不知道
它是什么，所以我只是 显示检查出来。
>> 所以，我要先做头。
所以，我检查了前六 什么这个数据集列。
因此，这是一个国家，pres04，然后 所有这些不同的排序列。
什么是有趣的 在这里，我想，是你
会认为这看起来 像某种选举。
我想刚刚从 查看文件
名称这是某种集合 有关候选人或选民数据
谁投票给特定的总统 或总统候选人
在2004年大选。
>> 因此，这里是值1，2 如此存储的一种方式
总统候选人 他们的名字。
在这种情况下，它看起来像 他们只是整数值。
所以，2004年，这是布什 与克里相信。
现在，让我们说你只是不知道 无论是1对应于布什或2
对应于克里或与 等等等等，对不对？
>> 而这，只是为了我， 一个相当普遍的问题。
那么，你可以在这种情况下怎么办？
因此，让我们检查所有这些其他的事情。
>> 状态，我假设这 来自不同的状态。
partyid收入。
让我们来看看ID，然后
因此，也许有一件事你可以做的是 看看每个观察
有共和党一partyid 还是民主党或什么的。
那么就让我们来看看什么是partyid。
>> 所以我要带 DAT，然后我要去
要做到这一点美元符号 我以前做过运营商
并且这将 子集到该列。
然后我将头这 20，正好看到了这个样子。
>> 因此，这只是一堆港定居人士。
因此，换句话说，必须 缺少有关这些人的数据。
但是你也注意到这一点 的DAT partyid是一个因素
所以这给你不同的类别。
因此，换句话说，partyid可以采取 民主党人，共和党人，独立，
还是其他什么东西。
>> 因此，让我们继续前进，让我们 看到这些is--哦，OK的。
所以，我要子集 以partyid然后
看看哪些是 民主党人，例如。
这是要给你一个布尔值， TRUEs和FALSEs巨大布尔。
>> 现在，让我们说，我想 以子集这些家伙。
因此，这是要采取我的DAT和 子集的意见为准
有partyid平等等于民主党。
这是相当长的，因为 有这么多的人。
所以，现在，我要前往这20。
>> 正如你注意到，等于等号 是在你感兴趣的
already--你还包括在NAS。
所以在这种情况下，你仍然不能得到 任何信息，因为现在你有来港定居
而你只是想看看它的 观察对应民主党
而不是这些缺失的值本身。
所以，你将如何摆脱这些来港定居的？
>> 所以在这里我只是用在了我的钥匙 游标，然后说走动。
然后在这里我只是去 说is.na datpartyid。
因此，这与和将采取 两个不同的布尔向量
并说这将是 TRUE和FALSE的例子。
所以它会做这个组件明智的。
所以在这里我想说的起飞 数据帧，子集
到对应于民主党人的那些， 并删除其中的任何不属于NA。
>> 因此，这will--应 给你的东西。
让我们来看看is.na.
让我们试着is.na datpartyid。
这应该给你 - sorry--只是一个布尔向量。
然后，因为它是如此漫长， 我要去子集20。
好不好。
所以这应该工作。
>> 而这一次也将是TRUEs。
啊，所以我在这里的错误是I'm--我 使用C ++和R互换，所以我做
这个错误的所有时间。
在与运营商的 其实你想要的。
不希望使用两个 ＆符号，只是一个单一的之一。
好不好。
>> 所以，让我们来看看。
所以我们子集化的 partyid他们是民主党
而他们没有缺失值。
现在让我们来看看 哪些，他们投票支持。
因此，它似乎最喜欢的 他们投票支持1。
所以我要继续前进 并说这是克里。
>> 同样，你可以 还去共和党
并希望，这应该给你2。
这只是一堆不同的列。
事实上，这是2。
所以partyid所有共和党， 他们大多投票支持2。
>> 所以它看起来，只是 通过看这个，
共和党将是 一个very--或partyid
将是一个非常 在确定大因素
哪位候选人，他们是 会投票支持。
这是一般的明显事实。
这符合您的 直觉的，当然。
如此看来像我 时间不多了这样
让我应该继续 并展示一些快速的图像。
因此，这里的东西是轻微 更复杂的可视化。
所以在这种情况下，这是一个很 简单只是检查分析什么
'04总统是。
>> 所以在这种情况下，假设你 要回答这个问题。
因此，假设我们想知道投票 在2004年的总统选举中的行为
以及如何通过不同的比赛。
所以，你不仅要 看到投票行为，
但你希望每个来子集 那种种族和总结了。
你只能告诉 通过这种复杂的符号
这是一种越来越朦胧。
>> 这样的更先进的研发1 包是最近也是一种
被称为dplyr。
所以它是这一个就在这里。
和ggg-- ggplot2是一个不错的 做更好的可视化方式
比内置于一体。
>> 所以我要加载 这两个库。
然后，我会去 提前并运行此命令。
你可以把它当作一个黑盒子。
>> 这是怎么回事的是，这条管道 运营商正在通过这一说法
到这里。
所以我说GROUP BY DAT 种族和当时的总统04。
然后，所有这些其他命令 被过滤，然后总结
在那里我做的数量和 然后我绘制在这里。
OK凉爽。
因此，让我们继续前进， 看看这是什么样子。
>> 因此，这里发生了什么，是我 刚才绘制的每个种族和然后
哪些，他们投票支持。
与这两个不同的 值对应于2和1。
如果你想更 优雅的，你也可以
只是指定2 Kerry--或 2是布什，然后1克里。
你也可以拥有 在你的传奇。
>> 而且你还可以拆分这些柱状图。
因为有一件事是 ，如果你注意到，
这不是很容易识别 其中这两个值都较大。
这么一件事，你会想 做的是利用这个蓝色区域
，只是将它在这里等你 可通过侧比较这两个侧面。
我想这是我的东西 没有时间做的事情，
但是这也很容易做到。
你可以看看 手册页ggplot的。
所以，你可以做ggplot像 这一点，读入该手册页。
>> 所以，让我迅速 告诉你一些很酷的事情。
让我们继续前进，去to--只是一个 应用机器学习。
因此，让我们说我们有这三个 封装所以我打算在加载这些。
因此，这只是输出一些 信息后，我装的东西。
所以我说这句话的read.csv， 此数据集，现在
我要继续前进，并期待和 看看这是什么数据集内。
>> 因此，第一个20的观察。
所以我只是有X1，X2，和Y.因此， 似乎像一堆这些值
是从也许20到80左右。
然后同样的X2，然后 此ý似乎是标签0和1。
>> 为了验证这一点，我可以 只是做汇总数据X1。
然后同样的 所有这些其他列。
所以总结的快捷方式 只是显示你快速的价值观。
哦，对不起。
这应该是Y.
>> 所以在这种情况下，给出了 分位数，中位数，马克塞斯为好。
在这种情况下，DATAY，可以看到 它只是将是0和1。
也平均在说 0.6，只是意味着它
好像我比0以上1秒。
>> 因此，让我继续前进，显示 你这是什么样子。
所以我只是要绘制这样。
让我们来看看如何清除此。
哦确定。
好不好。
>> 因此，这是什么样子。
所以好像我指定的黄色 为0，然后冲我指定为1秒。
所以在这里它看起来像 标注点和它
好像你只是想要一些 这类群集在此的。
>> 并让我继续前进，显示 您其中的一些内置的功能。
因此，这里是流明。
因此，这只是试图 以适应线路于此。
那么，什么是最好的方法 我能适应这样的行
它将最好分开 这种集群。
理想情况下，你可以看到 我只是运行这些命令
然后，我要去 提前并添加行。
>> 因此，这似乎是最好的猜测。
它采取的最好的一个最小化 在试图将这一行的错误。
很显然，这看起来种 不错，但不是最好的。
和线性模型，在 一般情况下，将要
真正伟大的理论，只是排序 机器的建筑基础的
学习。
但在实践中，你会 想要做一些更普遍。
>> 所以，你可以尝试运行 一些所谓的神经网络。
这些东西 越来越普遍。
他们只是工作飞驰 用于大型数据集。
因此，在这种情况下，我们仅have-- 让我们see--我们有nrow。
所以nrow只是说行数。
因此，在这种情况下，我 有100个观测值。
>> 因此，让我继续前进， 使一个神经网络。
因此，这是非常好的 因为我只能说NNET
然后我回归Y. 所以Y是该列。
然后回归它 其他两个变量。
因此，这是短 符号为X1和X2。
>> 因此，让我们继续前进并运行此。
哦，对不起。
我需要运行这件事。
而这仅仅是印刷符号 如何迅速或不能很快就
收敛。
所以看起来它没有收敛。
因此，让我继续前进，打印 出了这个样子。
>> 看到这里的图片，这里是 轮廓呈现，以及它如何适应。
这是just--你可以看到 这一点，这是非常，非常漂亮。
它甚至可能是 过学习，但你也可以
考虑到这一点与其他 技术，如交叉验证。
而这些也被内置到R.
>> 并让我告诉你 支持向量机。
这是另一种常见的真 技术，机器学习。
它是非常相似的线性模型，但 它使用什么叫做核方法。
让我们来看看如何好，做。
所以这个人是非常类似于如何 还有一个神经网络进行，
但它更顺畅。
而这是基于关 对what--支持向量机是如何工作的。
>> 所以，这只是一个非常 一些快速概述
的内置功能，你可以做 而也有一些数据探索。
所以，让我继续前进 并返回到幻灯片。
>> 所以，很显然，这是 不是很全面。
这真的只是一个传情 显示你什么，你真的可以做R.
所以，如果你只是想 要了解更多信息，点击这里
是一群不同的资源。
>> 所以，如果你喜欢的教科书或者你 只是喜欢阅读网上的东西，
那么这是一个梦幻般的 一个接哈德利韦翰，
谁也创造了这一切 真的很酷包。
如果你喜欢的视频，然后 伯克利有一个真棒集训
这是several--这是种很长。
它会教你几乎 一切你想知道R.
>> 同样，还有Codeacademy 而所有这些其他类型
互动网站。
它们也越来越 common--越来越普遍。
所以，这是非常相似Codeacademy。
最后，如​​果你只是 希望社区和帮助，
这些都是一堆 事情你可以去。
很显然，我们仍然 使用邮件列表，只
像几乎所有其他 编程语言社区。
和#rstats，这是 我们的社区微博。
这实际上相当普遍。
然后用户！
只是我们的会议。
>> 然后，当然，你可以 使用所有这些其他的Q＆A的事，
像堆栈溢出， 谷歌，然后GitHub上。
因为大多数这些包 和很多社区
围绕发展将集中 代码，因为它是开源的。
它只是真的在GitHub上好看。
最后，你可以，如果我联系 你只要有任何简单的问题。
所以，你可以找到我的Twitter在这里， 我的网站，只是我的电子邮件。
所以希望，这是 something--只有很短的传情
什么R是真正能够做到的事情。
并希望，你只要 看看这三个环节
看看你可以做更多。
我想这只是它。
谢谢。
>> [掌声]