1 00:00:00,000 --> 00:00:05,691 2 00:00:05,691 --> 00:00:07,690 康纳哈里斯:我还是 想一些令人兴奋的视频 3 00:00:07,690 --> 00:00:12,570 由专业咨询公司制作 使用R A大量的工作。 4 00:00:12,570 --> 00:00:16,329 >> 旁白:什么是背后的统计, 在分析和可视化 5 00:00:16,329 --> 00:00:19,770 今天最亮的数据科学家 和商界领袖依靠 6 00:00:19,770 --> 00:00:22,012 做出强有力的决策? 7 00:00:22,012 --> 00:00:23,540 您可能不总是看到它。 8 00:00:23,540 --> 00:00:24,790 但它的存在。 9 00:00:24,790 --> 00:00:29,460 这就是所谓的R,开源R--的 统计编程语言 10 00:00:29,460 --> 00:00:32,630 全球数据专家 过度使用的一切 11 00:00:32,630 --> 00:00:35,350 从映射广泛的社会 与市场趋势在线 12 00:00:35,350 --> 00:00:39,210 以发展金融和气候 模式,有助于推动我们的经济 13 00:00:39,210 --> 00:00:40,780 和社区。 14 00:00:40,780 --> 00:00:44,910 >> 但究竟什么为R 和在哪里R开始? 15 00:00:44,910 --> 00:00:48,620 本来嘛,R开始 这里两位教授 16 00:00:48,620 --> 00:00:51,950 谁想要一个更好的统计 平台为他们的学生。 17 00:00:51,950 --> 00:00:56,030 因此,他们创建了一个模型 统计语言S.后 18 00:00:56,030 --> 00:01:00,480 他们和许多人一样, 不停地工作,并使用R, 19 00:01:00,480 --> 00:01:05,489 对于R创建工具和查找 对于R每天都有新的应用程序。 20 00:01:05,489 --> 00:01:07,750 >> 由于这是 世界各地的社区的努力, 21 00:01:07,750 --> 00:01:11,850 ř持续增长数千 内置用户创建库 22 00:01:11,850 --> 00:01:15,500 提升自主功能和 人群来源的质量验证 23 00:01:15,500 --> 00:01:19,740 从最被认可的支持 行业领袖在各个领域的 24 00:01:19,740 --> 00:01:25,040 使用R.这是伟大的,因为 R是最擅长做什么。 25 00:01:25,040 --> 00:01:28,540 迅速萌芽专家 很容易理解,互动, 26 00:01:28,540 --> 00:01:33,790 和可视化的数据显示其迅速 ř全球用户不断增长的社区 27 00:01:33,790 --> 00:01:36,380 并了解如何开源 - [R继续塑造 28 00:01:36,380 --> 00:01:39,340 统计未来 分析和数据科学。 29 00:01:39,340 --> 00:01:44,660 30 00:01:44,660 --> 00:01:47,710 >> 康纳哈里斯:好,太好了。 31 00:01:47,710 --> 00:01:50,360 所以我自己的演讲 会多一点清醒。 32 00:01:50,360 --> 00:01:54,380 它不会涉及到多 令人振奋的背景音乐。 33 00:01:54,380 --> 00:01:59,160 但是当你在视频中看到,R是排序 的通用程序语言。 34 00:01:59,160 --> 00:02:03,720 但它的创建主要是 对统计工作。 35 00:02:03,720 --> 00:02:07,980 >> 因此,它的设计进行统计, 进行数据分析,数据挖掘。 36 00:02:07,980 --> 00:02:12,420 所以你可以看到这个在很多 该设计选择R的制造商 37 00:02:12,420 --> 00:02:13,320 进行。 38 00:02:13,320 --> 00:02:15,472 它的设计主要是, 人谁不 39 00:02:15,472 --> 00:02:17,930 专家在编程,谁 刚拿起节目 40 00:02:17,930 --> 00:02:23,460 就在身边,使他们可以做他们的工作, 在社会科学或统计学 41 00:02:23,460 --> 00:02:25,440 或什么的。 42 00:02:25,440 --> 00:02:27,850 >> 它有很多非常 从C.重要的区别 43 00:02:27,850 --> 00:02:33,200 但语法和范例 它使用大致相同。 44 00:02:33,200 --> 00:02:36,830 你应该觉得很 驾轻就熟了蝙蝠的权利。 45 00:02:36,830 --> 00:02:38,520 这是命令式语言。 46 00:02:38,520 --> 00:02:40,260 >> 不要太担心了 如果你不知道这个词。 47 00:02:40,260 --> 00:02:42,676 但是有一个区别 当务之急,声明之间, 48 00:02:42,676 --> 00:02:43,810 和功能。 49 00:02:43,810 --> 00:02:47,600 当务之急只是意味着你做 语句基本上都是命令。 50 00:02:47,600 --> 00:02:52,340 再解释或 计算机跟随他们一个接一个。 51 00:02:52,340 --> 00:02:56,630 它的弱类型,有 在R没有类型声明 52 00:02:56,630 --> 00:02:59,130 >> 然后行 不同类型之间 53 00:02:59,130 --> 00:03:03,920 更宽松的不是位 它们是在C中,例如。 54 00:03:03,920 --> 00:03:06,450 正如我说有 非常广泛设施 55 00:03:06,450 --> 00:03:15,610 对于图形,统计 分析,数据挖掘。 56 00:03:15,610 --> 00:03:19,540 这些都被内置到 语言和,作为视频说 57 00:03:19,540 --> 00:03:23,680 数以千计的第三方库 你可以下载并免费使用 58 00:03:23,680 --> 00:03:25,340 非常宽松的许可条件。 59 00:03:25,340 --> 00:03:28,800 60 00:03:28,800 --> 00:03:31,500 >> 因此,在一般情况下,我建议 你看看这两本书 61 00:03:31,500 --> 00:03:34,610 如果你去工作,R.一 他们是官方ř初学者 62 00:03:34,610 --> 00:03:35,110 指南。 63 00:03:35,110 --> 00:03:38,660 它是由维护 R的核心开发人员 64 00:03:38,660 --> 00:03:42,400 你可以重新下载,免费的 充电和法律上的该链接存在。 65 00:03:42,400 --> 00:03:45,430 66 00:03:45,430 --> 00:03:49,869 所有这些载玻片要去 在互联网上,在CS50网站 67 00:03:49,869 --> 00:03:50,660 后这样做。 68 00:03:50,660 --> 00:03:53,690 因此,没有必要复制 下来疯狂。 69 00:03:53,690 --> 00:03:56,800 >> 另一种是 教科书卡斯马Shalizi, 70 00:03:56,800 --> 00:04:00,100 谁是一个统计学教授 卡内基·梅隆大学,被称为高级数据 71 00:04:00,100 --> 00:04:02,160 从分析 查看的基本点。 72 00:04:02,160 --> 00:04:04,010 这不是主要的R书。 73 00:04:04,010 --> 00:04:07,130 这是一个统计的书, 这是一个数据分析的书。 74 00:04:07,130 --> 00:04:11,990 但它是人们十分便利谁 有统计数据的知识一点点。 75 00:04:11,990 --> 00:04:13,750 >> 我从来没有采取正式课程。 76 00:04:13,750 --> 00:04:17,269 我只知道的点点滴滴 从各有关学科 77 00:04:17,269 --> 00:04:18,579 我已经在采取课程。 78 00:04:18,579 --> 00:04:21,839 我能够理解 它非常清楚。 79 00:04:21,839 --> 00:04:25,630 >> 所有附图中给出 在R它们R中制成 80 00:04:25,630 --> 00:04:30,280 他们也有代码清单 每个数字下面告诉您 81 00:04:30,280 --> 00:04:33,270 如何使每个人物有R代码。 82 00:04:33,270 --> 00:04:37,400 这就是,如果非常有用 你想效仿 83 00:04:37,400 --> 00:04:38,650 有些图你在书上看到的。 84 00:04:38,650 --> 00:04:47,840 >> 并再次免费下载 stat.cmu.edu/cshalizi/对不起, 85 00:04:47,840 --> 00:04:50,230 应该削减波浪cshalizi。 86 00:04:50,230 --> 00:04:53,150 我会确保纠正 当官方的幻灯片上。 87 00:04:53,150 --> 00:04:57,000 / ADAfaEPoV这仅仅是 首字母缩写的书名。 88 00:04:57,000 --> 00:04:59,850 89 00:04:59,850 --> 00:05:02,500 >> 所以一般caveats--ř 有很多的功能。 90 00:05:02,500 --> 00:05:05,331 我只是要能够覆盖 很多事情的表面。 91 00:05:05,331 --> 00:05:08,580 研讨会也在第一部分 将是一些数据转储。 92 00:05:08,580 --> 00:05:11,437 我很抱歉。 93 00:05:11,437 --> 00:05:13,770 基本上,我要去 向您介绍了很多东西 94 00:05:13,770 --> 00:05:15,350 马上蝙蝠,去 尽快。 95 00:05:15,350 --> 00:05:17,058 然后我们去 有趣的部分,这是 96 00:05:17,058 --> 00:05:20,570 演示,我可以告诉你一切 我们已经在屏幕上谈到。 97 00:05:20,570 --> 00:05:23,321 你可以在你自己玩。 98 00:05:23,321 --> 00:05:26,070 因此,有将是一个很大的 技术的东西扔了就在这里。 99 00:05:26,070 --> 00:05:28,060 不要担心复制所有下来。 100 00:05:28,060 --> 00:05:31,740 因为,你可以得到所有的 东东在CS50网站后。 101 00:05:31,740 --> 00:05:37,780 而B,这不是真的那么重要 从幻灯片记住这一点。 102 00:05:37,780 --> 00:05:40,462 它更重要的是,你得到 一些直观的设施与它 103 00:05:40,462 --> 00:05:44,220 而来自只是在摆弄。 104 00:05:44,220 --> 00:05:45,720 >> 那么为什么要使用R' 105 00:05:45,720 --> 00:05:49,440 基本上,如果你有一个项目, 涉及挖掘大型数据集,数据 106 00:05:49,440 --> 00:05:52,664 可视化,你 应该使用R.如果你 107 00:05:52,664 --> 00:05:55,830 做复杂的统计分析, 这将是很难在Excel, 108 00:05:55,830 --> 00:05:58,010 例如,它会 也可以还good-- 109 00:05:58,010 --> 00:06:00,506 如果你正在做统计 分析认为的自动化。 110 00:06:00,506 --> 00:06:02,130 比方说,你正在维护网站。 111 00:06:02,130 --> 00:06:06,320 你想读的服务器日志 每一天,编译一些名单, 112 00:06:06,320 --> 00:06:10,320 像上面国家的 您的用户来自哪里, 113 00:06:10,320 --> 00:06:15,100 多久了一些汇总统计 他们花费在您的网站或什么的。 114 00:06:15,100 --> 00:06:16,910 而你要每天这样跑。 115 00:06:16,910 --> 00:06:20,280 >> 现在,如果你这样做是在Excel中, 你必须去你的服务器日志, 116 00:06:20,280 --> 00:06:23,490 导入到 Excel数据表格, 117 00:06:23,490 --> 00:06:24,910 手动运行所有的分析。 118 00:06:24,910 --> 00:06:27,100 随着R,你可以写一个脚本。 119 00:06:27,100 --> 00:06:29,520 安排其运行每一天 从您的操作系统。 120 00:06:29,520 --> 00:06:33,657 然后每天晚上2:00 AM, 或者当你安排其运行, 121 00:06:33,657 --> 00:06:35,990 它会通过看你的 互联网流量的那一天。 122 00:06:35,990 --> 00:06:39,010 然后到了第二天,你会 有这样的光泽,新报告 123 00:06:39,010 --> 00:06:41,710 或与所有的任何 信息你问。 124 00:06:41,710 --> 00:06:44,960 125 00:06:44,960 --> 00:06:50,217 >> 所以基本上R是用于Cisco 编程与思科的分析。 126 00:06:50,217 --> 00:06:51,050 初步完成。 127 00:06:51,050 --> 00:06:53,104 让我们进入真正的东西。 128 00:06:53,104 --> 00:06:55,020 因此,有三个实 类型的语言。 129 00:06:55,020 --> 00:06:56,120 有数字类型。 130 00:06:56,120 --> 00:07:01,250 有排序之间的差的 整数和浮点, 131 00:07:01,250 --> 00:07:02,769 但不是真的。 132 00:07:02,769 --> 00:07:04,560 有一个字符 型,这是字符串。 133 00:07:04,560 --> 00:07:07,100 还有的逻辑 类型,这是布尔值。 134 00:07:07,100 --> 00:07:11,080 >> 你可以类型之间的转换 使用这些功能的数字, 135 00:07:11,080 --> 00:07:15,220 人品,作为逻辑。 136 00:07:15,220 --> 00:07:17,510 如果调用,例如, 作为数字上的绳子, 137 00:07:17,510 --> 00:07:20,030 它会尝试读取该字符串 作为一个数,以相同的方式 138 00:07:20,030 --> 00:07:25,897 这A2I和scanf做,和C.如果 你叫的数字上真的还是假的 139 00:07:25,897 --> 00:07:26,980 将转换为1或0。 140 00:07:26,980 --> 00:07:29,110 如果调用的字符 任何东西,它会 141 00:07:29,110 --> 00:07:32,550 将其转换成 字符串表示。 142 00:07:32,550 --> 00:07:34,990 >> 再就是向量和矩阵。 143 00:07:34,990 --> 00:07:37,580 因此,载体基本上是 1维数组。 144 00:07:37,580 --> 00:07:40,600 他们就是我们所说的阵列 C.矩阵,2维数组。 145 00:07:40,600 --> 00:07:42,350 再高 维数组,你可以 146 00:07:42,350 --> 00:07:48,560 有3个,4个,5个维度或任何 数值串, 147 00:07:48,560 --> 00:07:52,860 的逻辑值。 148 00:07:52,860 --> 00:07:55,380 >> 您还可以列出哪些是 一种关联数组。 149 00:07:55,380 --> 00:07:57,390 我会进入一个位。 150 00:07:57,390 --> 00:07:59,390 因此,一个重要的事情 是旅行达人在研发 151 00:07:59,390 --> 00:08:01,470 是不存在 真正的,纯粹的原子类型。 152 00:08:01,470 --> 00:08:05,870 有间没有实际的区别 一个数,像一个数值, 153 00:08:05,870 --> 00:08:07,920 数值和列表。 154 00:08:07,920 --> 00:08:12,370 数值实际上是 相同长度为1的向量。 155 00:08:12,370 --> 00:08:14,959 这具有许多 重要的意义。 156 00:08:14,959 --> 00:08:17,500 一,这意味着你可以做 事情很容易涉及 157 00:08:17,500 --> 00:08:21,037 如添加一个数字的向量。 158 00:08:21,037 --> 00:08:23,120 R将基本图 什么你的意思。 159 00:08:23,120 --> 00:08:24,610 我会得到,在第二。 160 00:08:24,610 --> 00:08:27,930 这也意味着,有没有办法 该类型checker--的程度 161 00:08:27,930 --> 00:08:30,530 这类似的东西 存在于R--告诉 162 00:08:30,530 --> 00:08:33,780 当你传递的单个值 当它期望的阵列,反之亦然。 163 00:08:33,780 --> 00:08:39,159 而这可能会导致一些奇怪的 麻烦,我碰到的时候 164 00:08:39,159 --> 00:08:42,252 我在我的暑假作业使用R上。 165 00:08:42,252 --> 00:08:43,710 并且没有混合类型的数组。 166 00:08:43,710 --> 00:08:46,543 所以,你不能有一个数组是的 第一要素是,我不知道, 167 00:08:46,543 --> 00:08:49,332 字符串“约翰”和 第二个因素是42位。 168 00:08:49,332 --> 00:08:52,540 如果试图这样做,那么你会得到 一切都只是转换为字符串。 169 00:08:52,540 --> 00:08:54,760 因此,我们有串约翰,串42。 170 00:08:54,760 --> 00:08:58,250 171 00:08:58,250 --> 00:09:02,025 >> 因此,不寻常的语法features--最 的R语法非常类似于C. 172 00:09:02,025 --> 00:09:04,690 有几个重要的不同。 173 00:09:04,690 --> 00:09:05,620 打字非常弱。 174 00:09:05,620 --> 00:09:07,360 因此,有没有变量声明。 175 00:09:07,360 --> 00:09:12,670 分配使用的怪 错误操作员小于连字符。 176 00:09:12,670 --> 00:09:15,340 评论与#号。 177 00:09:15,340 --> 00:09:19,230 我想现在日子里,我们把它叫做哈希标签 虽然这不是真正accurate--不 178 00:09:19,230 --> 00:09:21,810 双斜杠。 179 00:09:21,810 --> 00:09:24,710 >> 模块化的残留物与%%的迹象。 180 00:09:24,710 --> 00:09:30,172 整数除法是%/%,这是 很难阅读时,它的预测 181 00:09:30,172 --> 00:09:30,880 在屏幕上。 182 00:09:30,880 --> 00:09:34,150 183 00:09:34,150 --> 00:09:37,200 你可以得到的范围 整数,结肠。 184 00:09:37,200 --> 00:09:41,840 因此,2,5会给你一个向量 的所有的数字2到5。 185 00:09:41,840 --> 00:09:44,530 >> 数组是一索引, 这螺丝了很多人 186 00:09:44,530 --> 00:09:47,540 ,如果他们是从更 典型的编程语言, 187 00:09:47,540 --> 00:09:50,450 像C,其中最 事情是零索引。 188 00:09:50,450 --> 00:09:54,420 再次,这是其中R的传统 对于喜欢不是一种语言 189 00:09:54,420 --> 00:09:56,560 专业编程人员的用武之地。 190 00:09:56,560 --> 00:09:59,680 如果你是一个社会学家或 一个经济学家或东西 191 00:09:59,680 --> 00:10:01,980 而你尝试使用 - [R基本上作为一种辅助 192 00:10:01,980 --> 00:10:03,832 你更重要 业务, 193 00:10:03,832 --> 00:10:06,040 你会发现 一个索引多一点自然的。 194 00:10:06,040 --> 00:10:09,890 因为你开始计数 在1在日常生活中,不为0。 195 00:10:09,890 --> 00:10:13,260 >> for循环,这类似于 在fo​​reach构建在PHP中, 196 00:10:13,260 --> 00:10:17,090 你会得到 学习in--很快。 197 00:10:17,090 --> 00:10:22,540 这是对价值的载体 那么你可以做的事情的价值。 198 00:10:22,540 --> 00:10:24,040 听众:那是拿出在课堂上。 199 00:10:24,040 --> 00:10:26,248 康纳哈里斯:噢,那是 拿出讲座,优秀的。 200 00:10:26,248 --> 00:10:29,815 听众:分配,是 应该从正确地指出剩下什么? 201 00:10:29,815 --> 00:10:31,440 康纳哈里斯:从右到左,是的。 202 00:10:31,440 --> 00:10:34,720 你可以把它看作是对价值 推入变量的权 203 00:10:34,720 --> 00:10:36,240 在左边。 204 00:10:36,240 --> 00:10:36,781 听众:OK。 205 00:10:36,781 --> 00:10:39,770 206 00:10:39,770 --> 00:10:42,330 >> 康纳哈里斯:最后 函数的语法是有点怪。 207 00:10:42,330 --> 00:10:48,460 你函数名FOO,分配 这个关键字的功能,其次 208 00:10:48,460 --> 00:10:51,530 所有的参数,然后 体后的功能。 209 00:10:51,530 --> 00:10:53,280 同样,这些东西可能 看起来有点怪。 210 00:10:53,280 --> 00:10:57,181 他们会成为后的第二天性 您使用了一点的语言。 211 00:10:57,181 --> 00:10:58,930 因此载体,方式 构造一个向量 212 00:10:58,930 --> 00:11:04,550 你是C类,这是一个关键字,那么 所有你想要的数字或字符串 213 00:11:04,550 --> 00:11:06,490 或什么的。 214 00:11:06,490 --> 00:11:07,995 参数也是载体。 215 00:11:07,995 --> 00:11:09,620 但由此产生的数组被夷为平地。 216 00:11:09,620 --> 00:11:14,385 所以,你不能有阵列,其中 有些元素是单数 217 00:11:14,385 --> 00:11:17,010 有些元素是数组本身。 218 00:11:17,010 --> 00:11:20,010 >> 所以,如果你试图构建 阵列是第一元件是4 219 00:11:20,010 --> 00:11:22,370 和第二元件 是阵列3,5你 220 00:11:22,370 --> 00:11:25,890 刚拿到三个元素的数组,4,3,5。 221 00:11:25,890 --> 00:11:27,760 它们不能是混合类型。 222 00:11:27,760 --> 00:11:32,290 如果您尝试读取或写入 一个向量的边界的外 223 00:11:32,290 --> 00:11:36,640 你会得到这个值被称为NA一 它代表一个缺失值。 224 00:11:36,640 --> 00:11:39,900 这是为 像统计学家谁 225 00:11:39,900 --> 00:11:43,080 正在使用不完整的数据集。 226 00:11:43,080 --> 00:11:46,460 >> 如果您应用的应该功能 拿一个号码到一个数组 227 00:11:46,460 --> 00:11:49,220 那么你会得到的是,在 函数映射在阵列。 228 00:11:49,220 --> 00:11:52,130 所以,如果你的函数让我们说需要 数字,并返回其方。 229 00:11:52,130 --> 00:11:58,170 您应用到阵列2,3,5 您将获得的是阵列4,9,25。 230 00:11:58,170 --> 00:12:00,010 >> 这是非常有用的 因为这意味着你 231 00:12:00,010 --> 00:12:03,374 不用写for循环的 做这样应用很简单的事情 232 00:12:03,374 --> 00:12:05,040 一个函数到数据集的所有成员。 233 00:12:05,040 --> 00:12:08,557 如果您正在使用大型哪家 数据集,你必须做很多。 234 00:12:08,557 --> 00:12:10,390 二元函数 通过进入应用条目。 235 00:12:10,390 --> 00:12:12,430 我会到这一点。 236 00:12:12,430 --> 00:12:16,750 您可以使用数组访问它们 或用方括号载体。 237 00:12:16,750 --> 00:12:22,300 所以向量名方括号1 会给你的第一要素。 238 00:12:22,300 --> 00:12:25,510 矢量名方括号2 会给你的第二个元素。 239 00:12:25,510 --> 00:12:27,530 >> 你可以通过一个载体 指数和你会 240 00:12:27,530 --> 00:12:29,640 找回了基本的子因素。 241 00:12:29,640 --> 00:12:34,990 所以,你可以做载体的名字支架C,2,4 你会得到了包括矢量 242 00:12:34,990 --> 00:12:38,804 第二和第四 数组的元素。 243 00:12:38,804 --> 00:12:40,720 如果你想只是一个 快速汇总统计 244 00:12:40,720 --> 00:12:47,529 像四分载体的 范围内,中值,最大值,什么的, 245 00:12:47,529 --> 00:12:49,820 您只需键入汇总 矢量名,并得到了这一点。 246 00:12:49,820 --> 00:12:52,680 这不是在真正有用的 编程,但如果你玩 247 00:12:52,680 --> 00:12:55,990 周围的数据集,这是得心应手。 248 00:12:55,990 --> 00:12:58,650 >> Matrices--基本 高维数组。 249 00:12:58,650 --> 00:13:01,190 他们有这个特殊的记号语法。 250 00:13:01,190 --> 00:13:07,620 矩阵,获取一个数组 充满in--对不起,矩阵的数据, 251 00:13:07,620 --> 00:13:09,780 行数,列数。 252 00:13:09,780 --> 00:13:13,180 当你有一些数据,它填补了 阵列基本上将从上到下 253 00:13:13,180 --> 00:13:13,380 第一。 254 00:13:13,380 --> 00:13:14,190 然后从左向右。 255 00:13:14,190 --> 00:13:15,030 所以,这样的。 256 00:13:15,030 --> 00:13:17,809 257 00:13:17,809 --> 00:13:19,600 而R已经建成 矩阵乘法, 258 00:13:19,600 --> 00:13:24,310 谱分解, 对角化,很多东西。 259 00:13:24,310 --> 00:13:27,785 如果你想要更高的尺寸 阵列,所以3,4,5, 260 00:13:27,785 --> 00:13:29,410 或任何方面,你可以做到这一点。 261 00:13:29,410 --> 00:13:34,400 语法是数组暗淡等于C, 然后尺寸的列表。 262 00:13:34,400 --> 00:13:38,620 所以,如果你想有一个4维数组 尺寸为4,7,8,9,阵列, 263 00:13:38,620 --> 00:13:45,470 昏暗等于C(-4,7,8,9-)。 264 00:13:45,470 --> 00:13:51,180 >> 您访问单个值与支架 第一项逗号第二个条目。 265 00:13:51,180 --> 00:13:54,870 你可以得到整个切片 的行或列。 266 00:13:54,870 --> 00:13:59,900 有了这个不完整的语法是 只是行号逗号或逗号列 267 00:13:59,900 --> 00:14:00,400 数。 268 00:14:00,400 --> 00:14:02,874 269 00:14:02,874 --> 00:14:04,540 因此,列表是一种关联数组。 270 00:14:04,540 --> 00:14:06,360 他们有自己的语法在这里。 271 00:14:06,360 --> 00:14:08,320 同样不疯狂 复制这一切了。 272 00:14:08,320 --> 00:14:11,370 这只是让人们 经过幻灯片后 273 00:14:11,370 --> 00:14:13,089 拥有这一切都在一个不错的参考。 274 00:14:13,089 --> 00:14:16,130 而这将成为很自然的,一旦 我实际上是通过演示走路。 275 00:14:16,130 --> 00:14:19,295 276 00:14:19,295 --> 00:14:20,920 因此,列出了主要相关阵列。 277 00:14:20,920 --> 00:14:27,040 您可以访问值 列表名称,美元符号,键。 278 00:14:27,040 --> 00:14:31,370 所以,如果您的列表名为foo, 那么你就可以访问它这样。 279 00:14:31,370 --> 00:14:37,032 你可以得到一个完整的键值对 通过传递在方括号索引。 280 00:14:37,032 --> 00:14:39,240 如果你从一个不存在的阅读 键,你会得到空。 281 00:14:39,240 --> 00:14:41,150 它不会出错。 282 00:14:41,150 --> 00:14:43,590 事情是,R会做的 多与空,因为它可以。 283 00:14:43,590 --> 00:14:46,580 这可能意味着,如果你 没想到得到空出 284 00:14:46,580 --> 00:14:51,840 一些列表读,你会得到一些 不可预知的错误进一步回落 285 00:14:51,840 --> 00:14:52,620 路线。 286 00:14:52,620 --> 00:14:54,890 >> 这发生在我身上我 暑期工当我使用ṛ 287 00:14:54,890 --> 00:14:58,410 在那里我改怎么有一定 名单是在一个地方定义 288 00:14:58,410 --> 00:15:05,410 但没有后来就改 从它读取值的代码。 289 00:15:05,410 --> 00:15:10,190 所以,事情的经过是我 读空值出这份名单的, 290 00:15:10,190 --> 00:15:13,090 将它们传递到功能, 而且是很迷茫 291 00:15:13,090 --> 00:15:16,000 当我得到了各种各样的 随机无穷此起彼伏 292 00:15:16,000 --> 00:15:16,790 在此功能。 293 00:15:16,790 --> 00:15:20,730 因为如果你使用特定的最大 或最小功能为null, 294 00:15:20,730 --> 00:15:22,570 你会得到无限的价值了。 295 00:15:22,570 --> 00:15:26,400 296 00:15:26,400 --> 00:15:29,180 >> 数据帧,他们列表的一个子类。 297 00:15:29,180 --> 00:15:31,170 每个值是一个向量 的长度相同。 298 00:15:31,170 --> 00:15:34,220 而他们用于展示, 基本上,数据表。 299 00:15:34,220 --> 00:15:36,175 有这种初始化语法。 300 00:15:36,175 --> 00:15:38,800 这一切,再次,要多 更清晰的,当你到了演示。 301 00:15:38,800 --> 00:15:42,240 302 00:15:42,240 --> 00:15:44,240 约在好处 数据帧是你 303 00:15:44,240 --> 00:15:49,380 可以给名称的所有列 和名称的所有行。 304 00:15:49,380 --> 00:15:53,890 而这样就使得访问 他们一点友善。 305 00:15:53,890 --> 00:15:59,130 另外这是大多数的功能, 阅读从Excel电子表格中的数据 306 00:15:59,130 --> 00:16:03,820 或从文本文件,例如, 将读取其数据。 307 00:16:03,820 --> 00:16:07,555 他们会把它变成 某种形式的数据帧。 308 00:16:07,555 --> 00:16:09,680 所以functions--功能 语法是有点怪异。 309 00:16:09,680 --> 00:16:16,160 再次它的功能的名称, 分配,此关键字的功能,然后 310 00:16:16,160 --> 00:16:17,900 参数列表。 311 00:16:17,900 --> 00:16:24,080 因此,有一些不错的东西 有关如何功能在这里工作。 312 00:16:24,080 --> 00:16:28,170 首先,你可以实际分配 缺省值的某些参数。 313 00:16:28,170 --> 00:16:32,910 所以,你可以说R1 equals--你可以说FOO 314 00:16:32,910 --> 00:16:38,290 是一个函数,其中,R1等于东西 如果用户指定通过缺省 315 00:16:38,290 --> 00:16:39,090 没有参数​​。 316 00:16:39,090 --> 00:16:41,932 否则,它是什么,他插嘴说。 317 00:16:41,932 --> 00:16:44,140 这是非常方便的 因为我们的很多功能 318 00:16:44,140 --> 00:16:47,910 有动辄几十或 数以百计的参数。 319 00:16:47,910 --> 00:16:51,210 例如那些用于绘图 图表或绘制散点图 320 00:16:51,210 --> 00:16:54,430 有控制参数 一切从标题和轴 321 00:16:54,430 --> 00:16:59,512 标签的回归线的颜色。 322 00:16:59,512 --> 00:17:01,470 所以,如果你不想 让人指定 323 00:17:01,470 --> 00:17:04,050 其中每一个人 数以百计的参数 324 00:17:04,050 --> 00:17:07,674 控制每一个方面 一个情节或回归或什么的, 325 00:17:07,674 --> 00:17:09,299 这高兴有这些默认值。 326 00:17:09,299 --> 00:17:12,700 327 00:17:12,700 --> 00:17:19,146 >> 然后你其实可以 写你看到的回到这里。 328 00:17:19,146 --> 00:17:22,869 或者找一个更好的例子。 329 00:17:22,869 --> 00:17:28,690 当你调用函数,你其实可以 使用参数名称调用它们。 330 00:17:28,690 --> 00:17:33,919 所以这里有一个例子 矩阵的构造。 331 00:17:33,919 --> 00:17:34,960 它采用三个参数。 332 00:17:34,960 --> 00:17:36,760 通常你的数据, 这是一个矢量。 333 00:17:36,760 --> 00:17:38,920 你有N个行,这 是行数。 334 00:17:38,920 --> 00:17:41,160 你有N个cols--列数。 335 00:17:41,160 --> 00:17:43,920 如果您键入的是 ñ排等于什么 336 00:17:43,920 --> 00:17:46,520 和N COL等于什么时 你调用这个函数, 337 00:17:46,520 --> 00:17:47,770 你其实可以逆转他们。 338 00:17:47,770 --> 00:17:51,590 所以,你可以把ñ山坳第一和N行 第二,它将使没有区别。 339 00:17:51,590 --> 00:17:54,660 所以这是一个不错的小功能。 340 00:17:54,660 --> 00:17:56,260 >> 难道进口和出口。 341 00:17:56,260 --> 00:18:00,010 这是可以做到的,基本上。 342 00:18:00,010 --> 00:18:03,816 也有设施写出来 任意ř对象二进制文件 343 00:18:03,816 --> 00:18:05,190 然后读回在后面。 344 00:18:05,190 --> 00:18:08,030 这是方便,如果你正在做的 一个大的互动环节 - [R 345 00:18:08,030 --> 00:18:12,850 你需要保存 东西非常快。 346 00:18:12,850 --> 00:18:16,460 默认情况下R的工作目录 该文件被写入伸到 347 00:18:16,460 --> 00:18:19,410 和阅读。最 348 00:18:19,410 --> 00:18:22,350 你可以看到, getwg,它与setdw变化。 349 00:18:22,350 --> 00:18:25,630 没有什么特别有趣这里 350 00:18:25,630 --> 00:18:28,270 >> 所以,现在的实际统计 stuff--多元线性回归。 351 00:18:28,270 --> 00:18:30,960 352 00:18:30,960 --> 00:18:34,910 因此,通常的语法 有一点复杂。 353 00:18:34,910 --> 00:18:37,260 该模型基本上是一个大的对象。 354 00:18:37,260 --> 00:18:39,910 它被分配给LM, 这是一个函数调用。 355 00:18:39,910 --> 00:18:43,840 的第一元件,在y 波浪X1加上什么。 356 00:18:43,840 --> 00:18:46,574 357 00:18:46,574 --> 00:18:47,990 我的语法,这里是一个有点混乱。 358 00:18:47,990 --> 00:18:49,490 我很抱歉,这 是标准的方式 359 00:18:49,490 --> 00:18:50,990 该计算机科学书籍做到这一点。 360 00:18:50,990 --> 00:18:54,890 但它是一个有点不可思议。 361 00:18:54,890 --> 00:18:58,200 >> 所以基本上,这是LM 括号,第一个项目 362 00:18:58,200 --> 00:19:06,730 是变量 - 很抱歉,因 变波浪X1以及X2加 363 00:19:06,730 --> 00:19:10,910 然而,许多独立 变量你。 364 00:19:10,910 --> 00:19:14,240 然后这些可以是 矢量,长度都相同。 365 00:19:14,240 --> 00:19:16,220 或者它们可以是柱 在一个数据帧标题 366 00:19:16,220 --> 00:19:18,553 您刚才指定的 第二个参数数据帧。 367 00:19:18,553 --> 00:19:23,270 368 00:19:23,270 --> 00:19:26,380 >> 您还可以指定 更复杂的公式 369 00:19:26,380 --> 00:19:31,990 所以你不必线性 倒退一个因变量, 370 00:19:31,990 --> 00:19:34,440 或在一个预先存在的载体一种载体。 371 00:19:34,440 --> 00:19:38,070 你可以这样做,例如, 矢量分量Y的平方加1 372 00:19:38,070 --> 00:19:42,100 而回归的对抗 登录一些其他的载体。 373 00:19:42,100 --> 00:19:45,200 您可以打印的摘要 模型用这个命令被称为 374 00:19:45,200 --> 00:19:48,607 summary--只是总结模型的括号。 375 00:19:48,607 --> 00:19:50,190 再次别的东西我要澄清。 376 00:19:50,190 --> 00:19:55,407 377 00:19:55,407 --> 00:19:58,615 别的东西,会得到纠正 在幻灯片上在互联网上。 378 00:19:58,615 --> 00:20:01,127 379 00:20:01,127 --> 00:20:03,210 如果你只是想计算 一个简单的相关性 380 00:20:03,210 --> 00:20:09,170 你可以使用相关矢量 1矢量2功能核心。 381 00:20:09,170 --> 00:20:11,856 方法是通过缺省 皮尔逊相关。 382 00:20:11,856 --> 00:20:13,480 这些都是通用的标准,你可以做。 383 00:20:13,480 --> 00:20:15,990 此外,还有斯皮尔曼和 Kendell关系 384 00:20:15,990 --> 00:20:19,530 这是一些不同的 等级次序相关性。 385 00:20:19,530 --> 00:20:23,600 那么,他们不计算产品 向量相互之间的时刻, 386 00:20:23,600 --> 00:20:28,511 但载体的军衔命令。 387 00:20:28,511 --> 00:20:29,510 稍后我会解释。 388 00:20:29,510 --> 00:20:30,120 >> 听众:快问 389 00:20:30,120 --> 00:20:30,360 >> CONNER哈里斯:当然可以。 390 00:20:30,360 --> 00:20:33,151 >> 听众:所以,当你计算 对于简单的相关性做 391 00:20:33,151 --> 00:20:37,655 你认为有一个统计 意义的相关? 392 00:20:37,655 --> 00:20:39,030 CONNER哈里斯:你不必。 393 00:20:39,030 --> 00:20:41,840 394 00:20:41,840 --> 00:20:43,960 直线运动基本上只是一台机器。 395 00:20:43,960 --> 00:20:47,690 这将需要两件事情 它会吐出 396 00:20:47,690 --> 00:20:49,770 系数的最佳拟合线。 397 00:20:49,770 --> 00:20:52,310 它还报告标准 错误的那些系数。 398 00:20:52,310 --> 00:20:55,865 它会告诉你,就像是 拦截统计学显著 399 00:20:55,865 --> 00:20:56,740 或者从0差异。 400 00:20:56,740 --> 00:20:59,400 是最好的斜率 拟合线统计 401 00:20:59,400 --> 00:21:01,510 不同于零,等等。 402 00:21:01,510 --> 00:21:06,260 因此,它假定什么,我想, 是你的问题最好的答案。 403 00:21:06,260 --> 00:21:07,410 好。 404 00:21:07,410 --> 00:21:14,650 >> Plotting--所以主要的原因,你应该 使用R,像多元线性回归。 405 00:21:14,650 --> 00:21:17,320 基本上每一种语言 有一些设施的。 406 00:21:17,320 --> 00:21:21,365 老实说的r语法 回归是一个有点神秘。 407 00:21:21,365 --> 00:21:22,990 但绘图是它真正的亮点。 408 00:21:22,990 --> 00:21:28,090 >> 主力功能是阴谋 它需要两个矢量,x和y。 409 00:21:28,090 --> 00:21:33,010 然后椭圆代表一个非常 大量的可选参数, 410 00:21:33,010 --> 00:21:39,190 控制一切,从标题到色彩 ,各线或各点 411 00:21:39,190 --> 00:21:40,200 对情节类型。 412 00:21:40,200 --> 00:21:42,250 你可以有散射 图或线图。 413 00:21:42,250 --> 00:21:47,900 414 00:21:47,900 --> 00:21:49,710 >> [听不清] 2载体 的长度相同。 415 00:21:49,710 --> 00:21:53,780 你可以先用这个连接 在你的脚本数据帧。 416 00:21:53,780 --> 00:22:01,220 而这会让你只使用列 头,而不是分开的载体。 417 00:22:01,220 --> 00:22:05,410 您可以添加最合适的线路和本地 回归曲线的图形。 418 00:22:05,410 --> 00:22:09,390 >> 这些命令上市 在这里,AB线与线, 419 00:22:09,390 --> 00:22:11,640 默认情况下,这些获得 写入到弹出窗口 420 00:22:11,640 --> 00:22:15,560 因为它假设 您使用的是 - [R交互。 421 00:22:15,560 --> 00:22:17,310 如果你不是,你可以 写两个文件 422 00:22:17,310 --> 00:22:21,600 是真的是你想要的任何格式。 423 00:22:21,600 --> 00:22:25,410 对不起,我有我才意识到一个错字。 424 00:22:25,410 --> 00:22:30,887 425 00:22:30,887 --> 00:22:32,720 如果你想打开 另一种图形设备 426 00:22:32,720 --> 00:22:39,200 你可以使用这个功能叫做PNG或 JPEG或很多其他的图像格式。 427 00:22:39,200 --> 00:22:42,319 你可以写图形来 任何文件名指定。 428 00:22:42,319 --> 00:22:45,110 要取消,你必须use-- 我没有在slide--写 429 00:22:45,110 --> 00:22:49,650 但有一个功能叫做开发 点关闭不带参数。 430 00:22:49,650 --> 00:22:51,517 >> 再就是设施 对于3D绘图 431 00:22:51,517 --> 00:22:53,350 和轮廓绘制 如果你想 432 00:22:53,350 --> 00:22:55,700 两个独立的变量的曲线图。 433 00:22:55,700 --> 00:22:57,150 我不会进入这些现在。 434 00:22:57,150 --> 00:22:59,130 >> 也有一些 动画设施 435 00:22:59,130 --> 00:23:01,300 这些通常是 由第三方维护。 436 00:23:01,300 --> 00:23:06,330 我已经做动画有R图, 但我没有使用这些第三方 437 00:23:06,330 --> 00:23:06,940 库。 438 00:23:06,940 --> 00:23:09,929 所以我真的不能证明 他们有多好。 439 00:23:09,929 --> 00:23:12,220 我建议,如果你想 使基于R动画 440 00:23:12,220 --> 00:23:16,480 是你可以写出所有的 为动画帧 441 00:23:16,480 --> 00:23:18,470 然后你可以使用一个 第三方program-- 442 00:23:18,470 --> 00:23:23,630 典型的是所谓的FFmpeg 或ImageMagick--缝合 443 00:23:23,630 --> 00:23:26,540 所有的帧成一个动画。 444 00:23:26,540 --> 00:23:28,380 >> 因此,时间的演示。 445 00:23:28,380 --> 00:23:31,030 446 00:23:31,030 --> 00:23:37,189 所以,如果你使用任何类Unix系统 这是Linux的BSD,但谁使用BSD。 447 00:23:37,189 --> 00:23:39,730 OS X打开一个终端窗口, 在命令提示符下键入R上。 448 00:23:39,730 --> 00:23:42,820 如果你现在是R工作室或 等,它们也适用。 449 00:23:42,820 --> 00:23:46,270 对于Windows用户,您应该 能求R在开始菜单中。 450 00:23:46,270 --> 00:23:50,390 它应该叫什么 如R 64 3点什么。 451 00:23:50,390 --> 00:23:53,110 打开那里。 452 00:23:53,110 --> 00:23:58,850 >> 所以,现在让我只 打开一个终端窗口。 453 00:23:58,850 --> 00:24:02,562 好吧,搜索。 454 00:24:02,562 --> 00:24:03,520 听众:命令空间 455 00:24:03,520 --> 00:24:06,675 CONNER哈里斯:命令空间,谢谢你们。 456 00:24:06,675 --> 00:24:10,030 我通常不使用Mac电脑。 457 00:24:10,030 --> 00:24:13,310 终端,显示新窗口。 458 00:24:13,310 --> 00:24:18,120 新的窗口设置 基本,R.所以你应该得到 459 00:24:18,120 --> 00:24:22,230 一个值得欢迎的消息,这样的事情。 460 00:24:22,230 --> 00:24:31,060 >> 所以我基于R交互。 461 00:24:31,060 --> 00:24:32,719 你也可以自己写的 - [R脚本。 462 00:24:32,719 --> 00:24:34,510 基本上脚本运行 确切相同的方式 463 00:24:34,510 --> 00:24:40,250 如果你坐在电脑 键入每行一次一个。 464 00:24:40,250 --> 00:24:42,660 因此,让我们开始通过一个载体。 465 00:24:42,660 --> 00:24:46,230 一个箭头C 1,2。 466 00:24:46,230 --> 00:24:49,400 1,2,4。 467 00:24:49,400 --> 00:24:50,050 可以,当然。 468 00:24:50,050 --> 00:24:51,630 我可以让字体大小大。 469 00:24:51,630 --> 00:24:53,030 >> 听众:命令加 470 00:24:53,030 --> 00:24:53,650 >> CONNER哈里斯:命令加。 471 00:24:53,650 --> 00:24:54,191 命令加。 472 00:24:54,191 --> 00:24:57,610 473 00:24:57,610 --> 00:25:00,370 好吧,是不是这样? 474 00:25:00,370 --> 00:25:00,870 好? 475 00:25:00,870 --> 00:25:01,551 好。 476 00:25:01,551 --> 00:25:03,300 因此,让我们先来 声明向量列表。 477 00:25:03,300 --> 00:25:08,710 做一个,箭头,C 1,2,4。 478 00:25:08,710 --> 00:25:11,181 我们可以看到一个。 479 00:25:11,181 --> 00:25:12,680 不要担心支架存在。 480 00:25:12,680 --> 00:25:18,590 该支架是如此,如果你打印出来 很长的阵列,我们可以在哪里。 481 00:25:18,590 --> 00:25:26,987 一个例子是,如果我 只想范围为2〜200。 482 00:25:26,987 --> 00:25:28,820 如果我打印了很 多头排列,括号 483 00:25:28,820 --> 00:25:31,060 只是这样我就可以保持 跟踪哪个指数 484 00:25:31,060 --> 00:25:33,250 我们是在如果我在寻找 通过这个直观。 485 00:25:33,250 --> 00:25:36,570 486 00:25:36,570 --> 00:25:38,280 所以无论如何,我们有一个。 487 00:25:38,280 --> 00:25:43,326 >> 所以我说,阵列交互,然后 非常漂亮的,例如, 488 00:25:43,326 --> 00:25:44,450 一元的操作是这样的。 489 00:25:44,450 --> 00:25:46,500 那么,你认为我会 如果我输入一个加1得到什么呢? 490 00:25:46,500 --> 00:25:49,630 491 00:25:49,630 --> 00:25:51,140 是的。 492 00:25:51,140 --> 00:25:54,250 好了,现在我要让 这种不同的阵列。 493 00:25:54,250 --> 00:26:01,650 比方说,B C 20,40,80。 494 00:26:01,650 --> 00:26:03,400 所以,你有什么感想 这个命令不会做? 495 00:26:03,400 --> 00:26:09,962 496 00:26:09,962 --> 00:26:10,670 添加的元素。 497 00:26:10,670 --> 00:26:14,950 所以基本上这就是它做什么。 498 00:26:14,950 --> 00:26:16,740 所以这是非常方便的。 499 00:26:16,740 --> 00:26:23,800 所以,我怎么样我做到这一点。 C 是,我们说,6次1到10。 500 00:26:23,800 --> 00:26:26,789 501 00:26:26,789 --> 00:26:28,830 所以,做什么我想看看 包含的,你觉得呢? 502 00:26:28,830 --> 00:26:37,110 503 00:26:37,110 --> 00:26:38,110 因此,所有六的倍数。 504 00:26:38,110 --> 00:26:42,170 现在,你有什么感想 如果我这样做会怎样呢? 505 00:26:42,170 --> 00:26:48,090 我会让这一点更为清晰,C,C。 506 00:26:48,090 --> 00:26:50,365 所以会发生什么,你 想,如果我这样做? 507 00:26:50,365 --> 00:26:51,488 一加C。 508 00:26:51,488 --> 00:26:55,550 509 00:26:55,550 --> 00:26:56,050 [听不清] 510 00:26:56,050 --> 00:26:58,552 511 00:26:58,552 --> 00:27:02,350 >> 听众:无论是一个错误,或者它 只是增加了前三个元素。 512 00:27:02,350 --> 00:27:04,510 >> CONNER哈里斯:不太。 513 00:27:04,510 --> 00:27:05,522 这就是我们得到的。 514 00:27:05,522 --> 00:27:08,910 会发生什么事是更短 阵列,一个,得到了循环。 515 00:27:08,910 --> 00:27:13,990 所以,我们得到了124,124,124。 516 00:27:13,990 --> 00:27:15,710 是啊。 517 00:27:15,710 --> 00:27:18,940 基本上,你可以查看 在此之前的行为,加1, 518 00:27:18,940 --> 00:27:22,190 作为此问题,其中一个子类 最短阵列仅仅是数 519 00:27:22,190 --> 00:27:25,410 1,这是一个元件阵列。 520 00:27:25,410 --> 00:27:27,740 我只是说向量所有 的时间,而不是数组, 521 00:27:27,740 --> 00:27:30,290 因为这是第r 文档通常不会。 522 00:27:30,290 --> 00:27:33,070 这是一个根深蒂固的Ç习惯。 523 00:27:33,070 --> 00:27:37,590 >> 好了,所以现在我们有这个数组。 524 00:27:37,590 --> 00:27:38,830 因此,我们有这个数组,C。 525 00:27:38,830 --> 00:27:41,380 我们可以总结 对C,总结C统计数据。 526 00:27:41,380 --> 00:27:46,920 527 00:27:46,920 --> 00:27:48,280 这是很好的。 528 00:27:48,280 --> 00:27:51,070 529 00:27:51,070 --> 00:27:52,670 所以,现在让我们做一些矩阵的事情。 530 00:27:52,670 --> 00:27:56,160 比方说,m是一个矩阵。 531 00:27:56,160 --> 00:27:57,780 让我们使它成为一个三乘三一。 532 00:27:57,780 --> 00:28:01,630 这样的nrows等于3,以及NCOLS等于3。 533 00:28:01,630 --> 00:28:04,190 534 00:28:04,190 --> 00:28:10,710 而对于数据让我们do--等什么 你觉得这是要干什么? 535 00:28:10,710 --> 00:28:15,310 536 00:28:15,310 --> 00:28:16,580 >> 对,这是下一个。 537 00:28:16,580 --> 00:28:17,970 这是nrow和ncolumn。 538 00:28:17,970 --> 00:28:22,164 539 00:28:22,164 --> 00:28:24,580 所以我做了什么是我 宣布三乘三矩阵 540 00:28:24,580 --> 00:28:26,950 我已经通过了一个九元素的数组。 541 00:28:26,950 --> 00:28:30,530 因此,所有的对数 元素从1到9。 542 00:28:30,530 --> 00:28:33,400 543 00:28:33,400 --> 00:28:37,285 而所有这些数值填写 了array--遗憾? 544 00:28:37,285 --> 00:28:38,660 听众:这些都是基地10日志? 545 00:28:38,660 --> 00:28:41,284 CONNER哈里斯:不,日志 自然对数,所以e为底。 546 00:28:41,284 --> 00:28:44,886 547 00:28:44,886 --> 00:28:47,010 是的,如果你想基地 10日志,我认为你必须 548 00:28:47,010 --> 00:28:51,620 记录什么,通过日志10分。 549 00:28:51,620 --> 00:28:56,750 并在[听不清]只是这样的数据 填满阵列,所以从上到下, 550 00:28:56,750 --> 00:28:59,490 然后从左向右。 551 00:28:59,490 --> 00:29:06,890 如果你想要做一些其他的 阵列,假设n是矩阵。 552 00:29:06,890 --> 00:29:10,317 让我们这样做,我不知道,2至13。 553 00:29:10,317 --> 00:29:11,900 或者,我会做一些更有趣。 554 00:29:11,900 --> 00:29:13,770 我会做2〜4。 555 00:29:13,770 --> 00:29:15,780 nrow等于,让我们说,3。 556 00:29:15,780 --> 00:29:18,992 NCOL等于4。 557 00:29:18,992 --> 00:29:20,360 ñ。 558 00:29:20,360 --> 00:29:22,090 因此,我们已经得到了这一点。 559 00:29:22,090 --> 00:29:26,130 >> 现在,如果我们要乘这些, 我们将尽百分之n次个百分点, 560 00:29:26,130 --> 00:29:27,680 因为这是ñ。 561 00:29:27,680 --> 00:29:30,234 562 00:29:30,234 --> 00:29:31,400 我们有矩阵产品。 563 00:29:31,400 --> 00:29:33,970 564 00:29:33,970 --> 00:29:37,810 通过他们的方式,你怎么看 当我宣布n,则2〜4 565 00:29:37,810 --> 00:29:43,570 矢量得到循环,直至 它填补了所有的n? 566 00:29:43,570 --> 00:29:45,710 如果你失恋了 特征值分解, 567 00:29:45,710 --> 00:29:46,960 这是我们可以很容易做到。 568 00:29:46,960 --> 00:29:47,709 我们可以做的本征ñ。 569 00:29:47,709 --> 00:29:52,290 570 00:29:52,290 --> 00:29:54,600 所以这是我们第一次 遇到的列表。 571 00:29:54,600 --> 00:29:57,000 >> 所以本征,n是具有两个键的列表。 572 00:29:57,000 --> 00:29:58,430 值,这是这个数组这里。 573 00:29:58,430 --> 00:30:01,030 和载体,这是本数组这里。 574 00:30:01,030 --> 00:30:08,240 所以,如果你想提取, 比方说,这第三列 575 00:30:08,240 --> 00:30:13,080 从特征向量矩阵,因为 本征矢量是列向量。 576 00:30:13,080 --> 00:30:24,400 因此,我们可以做的VEC征ñ美元符号 的[听不清]载体,逗号3。 577 00:30:24,400 --> 00:30:29,800 578 00:30:29,800 --> 00:30:30,900 VEC。 579 00:30:30,900 --> 00:30:34,100 是这样的,正如您所料。 580 00:30:34,100 --> 00:30:39,210 >> 然后说了n次百分比次VEC。 581 00:30:39,210 --> 00:30:42,610 582 00:30:42,610 --> 00:30:48,320 因此,结果在这里肯定看起来像 如果我们把第三个特征值这里, 583 00:30:48,320 --> 00:30:50,390 其对应于 第三个特征向量。 584 00:30:50,390 --> 00:30:53,190 它只是乘以一切 这个特征向量,组件明智的, 585 00:30:53,190 --> 00:30:53,990 由特征值。 586 00:30:53,990 --> 00:30:57,760 而这正是我们所期望的, 因为这是特征值。 587 00:30:57,760 --> 00:31:00,890 有没有人在这里不 采取线性代数? 588 00:31:00,890 --> 00:31:02,530 一对夫妇的人,OK。 589 00:31:02,530 --> 00:31:04,030 只要把你的大脑关闭了一点。 590 00:31:04,030 --> 00:31:07,490 591 00:31:07,490 --> 00:31:20,720 事实上,如果我们把本征ñ 美元符号值的3倍VEC, 592 00:31:20,720 --> 00:31:21,810 也得到同样的事情。 593 00:31:21,810 --> 00:31:24,726 它以不同的格式作为行 向量,而不是一个列向量, 594 00:31:24,726 --> 00:31:25,640 但什么大不了的。 595 00:31:25,640 --> 00:31:29,430 596 00:31:29,430 --> 00:31:35,170 所以,这些基本上都是不错 的事情,我们可以用矩阵做, 597 00:31:35,170 --> 00:31:36,489 展示列表。 598 00:31:36,489 --> 00:31:39,030 我应该表现出了不错的 关于功能的事情为好。 599 00:31:39,030 --> 00:31:41,750 >> 因此,让我们say-- [听不清] 功能,姑且称之为 600 00:31:41,750 --> 00:31:51,960 它FUNC对功能N N squared-- 实际上,这不是真正的最好的。 601 00:31:51,960 --> 00:31:55,632 A,B,A方和B。 602 00:31:55,632 --> 00:31:58,547 603 00:31:58,547 --> 00:32:00,380 因此,一件事 功能,再次是他们 604 00:32:00,380 --> 00:32:01,963 并不需要显式的return语句。 605 00:32:01,963 --> 00:32:04,250 所以,你可以just--的 评估的最后一条语句 606 00:32:04,250 --> 00:32:07,502 将返回的说法, 或返回的值。 607 00:32:07,502 --> 00:32:10,460 因此,在这种情况下,我们只评估 一个语句,一个平方与b。 608 00:32:10,460 --> 00:32:12,043 这将是默认的返回值。 609 00:32:12,043 --> 00:32:14,530 它绝不会伤害到放 明确的返回值, 610 00:32:14,530 --> 00:32:16,880 特别是如果你正在处理一个 很复杂的逻辑功能 611 00:32:16,880 --> 00:32:17,380 流。 612 00:32:17,380 --> 00:32:18,450 但你并不需要它们。 613 00:32:18,450 --> 00:32:24,890 所以,现在我们能做的FUNC 5,1,和 基本上这是你所期望的东西。 614 00:32:24,890 --> 00:32:29,146 615 00:32:29,146 --> 00:32:31,270 别的东西,我们可以做的, 我们其实可以做FUNC b 616 00:32:31,270 --> 00:32:33,260 等于1,a等于5。 617 00:32:33,260 --> 00:32:36,870 618 00:32:36,870 --> 00:32:40,770 因此,如果我们在这里指定号码, 其论点是哪个说法 619 00:32:40,770 --> 00:32:44,680 在功能上,我们可以前后翻页 这些价值的地方,我们想要的。 620 00:32:44,680 --> 00:32:48,405 >> 听众:是否有什么原因 写出来用B 621 00:32:48,405 --> 00:32:52,404 相当于以只用反对 数字和逗号? 622 00:32:52,404 --> 00:32:54,820 CONNER哈里斯:是的,通常 做到这一点,如果你有功能 623 00:32:54,820 --> 00:32:58,540 有不少争论。 624 00:32:58,540 --> 00:33:00,690 这可能经常是这样 标志,你只希望 625 00:33:00,690 --> 00:33:03,130 要在极少数情况下使用。 626 00:33:03,130 --> 00:33:06,740 而这种方式,您可以only--你 可以参考特定参数 627 00:33:06,740 --> 00:33:09,110 要使用 非默认值, 628 00:33:09,110 --> 00:33:14,470 而你没有写出来 一串标志等于以后他们是假的。 629 00:33:14,470 --> 00:33:19,710 或者,我可以写一遍这个 像B A默认值等于2。 630 00:33:19,710 --> 00:33:26,289 然后我可以做˚FFUNC, 我会做4,1这个时候。 631 00:33:26,289 --> 00:33:28,580 和17,这是4平方 加1,如您所料。 632 00:33:28,580 --> 00:33:34,290 >> 但是,我也可以只 把这种用FUNC 4, 633 00:33:34,290 --> 00:33:36,970 我会得到18,因为 我不指定湾 634 00:33:36,970 --> 00:33:38,550 所以B得到的2的默认值。 635 00:33:38,550 --> 00:33:41,700 636 00:33:41,700 --> 00:33:47,200 >> 好了,现在如果你 随着演示下, 637 00:33:47,200 --> 00:33:51,010 在您的命令键入此行 提示,看看会发生什么吧。 638 00:33:51,010 --> 00:33:52,090 其实,不这样做。 639 00:33:52,090 --> 00:33:52,590 键入这一点。 640 00:33:52,590 --> 00:33:57,780 641 00:33:57,780 --> 00:34:01,000 你应该得到这样的事情。 642 00:34:01,000 --> 00:34:04,780 所以mtcars是一个内置的数据 这个演示设置 643 00:34:04,780 --> 00:34:13,550 目的自带with--自带 在默认情况下你ř分布。 644 00:34:13,550 --> 00:34:19,211 这是从统计的汇编 1974年发行的汽车趋势杂志 645 00:34:19,211 --> 00:34:20,710 对一些不同的车型。 646 00:34:20,710 --> 00:34:28,270 >> 因此,有英里每加仑,cylinders-- 我算了一下DISP is--马力。 647 00:34:28,270 --> 00:34:31,610 648 00:34:31,610 --> 00:34:32,420 大概。 649 00:34:32,420 --> 00:34:36,920 如果你只是谷歌MT车, 再一个第一的成绩 650 00:34:36,920 --> 00:34:38,730 将会从 官方R文件 651 00:34:38,730 --> 00:34:41,080 它会解释 所有这些数据字段。 652 00:34:41,080 --> 00:34:47,020 所以重量is--重量为 重车万吨。 653 00:34:47,020 --> 00:34:48,880 Q秒的四分之一英里的时间。 654 00:34:48,880 --> 00:34:52,409 655 00:34:52,409 --> 00:34:55,850 所以,现在我们可以做一些有趣的事情 关于MT车是一个数据字段。 656 00:34:55,850 --> 00:35:01,640 >> 因此,我们可以做的事情 像行名,山车。 657 00:35:01,640 --> 00:35:05,490 这是所有行的列表中的 数据集它们是汽车的名称。 658 00:35:05,490 --> 00:35:10,780 我们可以做colnames山汽车这一点。 659 00:35:10,780 --> 00:35:15,500 如果你这样做吨车, 子数值指标,如2。 660 00:35:15,500 --> 00:35:18,177 我们得到了第二列出 此,这将是圆柱体。 661 00:35:18,177 --> 00:35:19,370 >> 听众:你做了什么? 662 00:35:19,370 --> 00:35:21,570 >> CONNER哈里斯:我打 吨车,支架E, 663 00:35:21,570 --> 00:35:24,180 这给了我第二 柱而出吨的汽车。 664 00:35:24,180 --> 00:35:34,501 665 00:35:34,501 --> 00:35:38,110 或者,如果我们希望有一个排,我可以输入 mtcars逗号2中,例如。 666 00:35:38,110 --> 00:35:41,850 667 00:35:41,850 --> 00:35:46,390 其他2轮逗号,这样。 668 00:35:46,390 --> 00:35:48,880 这去你行。 669 00:35:48,880 --> 00:35:54,680 这这里只是给你一个 列,但列的向量。 670 00:35:54,680 --> 00:36:04,634 671 00:36:04,634 --> 00:36:06,425 我才意识到我现在 忘了展示 672 00:36:06,425 --> 00:36:09,150 关于向量一些很酷的东西 您可以与指数做。 673 00:36:09,150 --> 00:36:10,480 因此,让我做,现在。 674 00:36:10,480 --> 00:36:17,130 因此,让我们可做C gets--把 本上pause-- 2次1至10。 675 00:36:17,130 --> 00:36:21,360 所以C是只是要 矢量2至20。 676 00:36:21,360 --> 00:36:24,640 我可以把元素像这样,C2。 677 00:36:24,640 --> 00:36:30,942 我可以通过一个载体 这样,C--让我 678 00:36:30,942 --> 00:36:34,470 使用不同的名称比C一样,VEC℃。 679 00:36:34,470 --> 00:36:37,591 680 00:36:37,591 --> 00:36:39,340 基本上,我在做什么 这让你没有得到 681 00:36:39,340 --> 00:36:45,010 C的差别混淆为 载体建设中的作用, 682 00:36:45,010 --> 00:36:48,800 以及c作为变量名。 683 00:36:48,800 --> 00:36:53,120 VEC括号中的C 4,5,7。 684 00:36:53,120 --> 00:36:56,540 这将让我离开的第四,第五, 和该阵列的七个要素。 685 00:36:56,540 --> 00:37:01,740 我所能做的VEC,放在一个负 指数一样,负4。 686 00:37:01,740 --> 00:37:06,500 这将让我离开这与 第四个元素除去。 687 00:37:06,500 --> 00:37:10,140 然后,如果我想要做切片, 我可以通过6做VEC 2。 688 00:37:10,140 --> 00:37:15,480 2结肠6只是另一个 载体,它是2,3,4,5,6。 689 00:37:15,480 --> 00:37:18,230 吐出来了。 690 00:37:18,230 --> 00:37:20,770 >> 所以无论如何,回山车。 691 00:37:20,770 --> 00:37:26,650 692 00:37:26,650 --> 00:37:28,450 因此,让我们做一些回归。 693 00:37:28,450 --> 00:37:34,240 比方说,模型gets--我们 线性regress--我不知道。 694 00:37:34,240 --> 00:37:41,780 首先,让我们不要附加当然mtcars。 695 00:37:41,780 --> 00:37:44,870 696 00:37:44,870 --> 00:38:00,010 所以[听不清] LM模型,让我们回归 每加仑英里波浪重量。 697 00:38:00,010 --> 00:38:03,300 然后数据帧mtcars。 698 00:38:03,300 --> 00:38:06,830 所以总结模型。 699 00:38:06,830 --> 00:38:12,900 700 00:38:12,900 --> 00:38:15,595 >> 好了,这看起来有点复杂。 701 00:38:15,595 --> 00:38:19,380 但基本上,看到如果我们 试图表达英里每加仑 702 00:38:19,380 --> 00:38:23,970 作为重量的线性函数, 那么,我们在这里得到了这条线, 703 00:38:23,970 --> 00:38:28,730 其拦截在37.28。 704 00:38:28,730 --> 00:38:33,830 37.28。将理论英里 每加仑汽油的汽车,重为零。 705 00:38:33,830 --> 00:38:41,210 然后每增加吨, 你敲约为每加仑5英里 706 00:38:41,210 --> 00:38:42,440 关闭的这一点。 707 00:38:42,440 --> 00:38:45,120 这两个系数的你 可以看到,标准误差存在。 708 00:38:45,120 --> 00:38:47,870 而且他们都非常 统计学显著。 709 00:38:47,870 --> 00:38:55,740 >> 因此,我们可以非常肯定 1 E-10的负10。 710 00:38:55,740 --> 00:38:59,510 因此,1次东西的负 10,如果你犯了一个更重的车了, 711 00:38:59,510 --> 00:39:01,440 它会每加仑差英里。 712 00:39:01,440 --> 00:39:04,940 713 00:39:04,940 --> 00:39:07,250 或者,我们可以测试一些其他的模式。 714 00:39:07,250 --> 00:39:09,230 像代替 重量回归这一点, 715 00:39:09,230 --> 00:39:12,600 让我们回归它记录的重量, 因为也许有效重量 716 00:39:12,600 --> 00:39:15,690 里程数在某种程度上不是线性的。 717 00:39:15,690 --> 00:39:18,540 >> 这给了我们平方的0.7528的河 718 00:39:18,540 --> 00:39:19,610 因此,让我们试试这个。 719 00:39:19,610 --> 00:39:21,485 这一次,让我们做一个 不同的变量了。 720 00:39:21,485 --> 00:39:22,500 Model2的。 721 00:39:22,500 --> 00:39:24,800 所以综上所述,模型2。 722 00:39:24,800 --> 00:39:28,200 723 00:39:28,200 --> 00:39:31,390 好吧,让我们再次 这里有我们的最佳拟合线。 724 00:39:31,390 --> 00:39:36,160 而这个时间 - 这是说, 基本上,你每次 725 00:39:36,160 --> 00:39:38,090 增加的重量 车用电子的一个因素 726 00:39:38,090 --> 00:39:40,580 你失去了这么多英里每加仑。 727 00:39:40,580 --> 00:39:43,210 728 00:39:43,210 --> 00:39:50,326 >> 所以,这一次我们的剩余标准 错误它 - 那没关系,真的。 729 00:39:50,326 --> 00:39:53,540 剩余标准误差为 基本上只是标准错误 730 00:39:53,540 --> 00:39:57,760 你离开后, 带走的趋势线。 731 00:39:57,760 --> 00:40:02,805 而我们的R平方在这里为0.81, 这是比好一点什么 732 00:40:02,805 --> 00:40:07,640 我们以前,0.52。 733 00:40:07,640 --> 00:40:09,750 >> 所以,现在让我们来添加一个 长期以这种回归。 734 00:40:09,750 --> 00:40:13,020 因此,让我们回归英里每加仑 既对权数的日志 735 00:40:13,020 --> 00:40:21,130 并且,让我们做,Q英里, 四分之一英里的时间。 736 00:40:21,130 --> 00:40:26,190 OK,它必须有the--没事,QseC的。 737 00:40:26,190 --> 00:40:26,690 QseC的。 738 00:40:26,690 --> 00:40:30,630 739 00:40:30,630 --> 00:40:35,000 Actually--对不起,什么? 740 00:40:35,000 --> 00:40:37,000 我把这个东西 否则,除了模型2。 741 00:40:37,000 --> 00:40:38,000 让我把这个model3。 742 00:40:38,000 --> 00:40:40,860 743 00:40:40,860 --> 00:40:42,900 所以,现在我们可以做的总结model3。 744 00:40:42,900 --> 00:40:46,850 745 00:40:46,850 --> 00:40:49,100 等再次,这基本上 你所期望的东西。 746 00:40:49,100 --> 00:40:51,750 你有积极的拦截。 747 00:40:51,750 --> 00:40:54,550 有效增加 重量为负。 748 00:40:54,550 --> 00:40:58,490 和有效 增加四分之一英里的时间 749 00:40:58,490 --> 00:41:02,420 是积极的,但尽管 比不上重量。 750 00:41:02,420 --> 00:41:06,010 现在直观,可以使感 此说想想跑车。 751 00:41:06,010 --> 00:41:08,950 有一个非常快的加速, 在很短的四分之一英里的时间。 752 00:41:08,950 --> 00:41:13,729 他们也将使用更多的天然气, 而更明智的车会 753 00:41:13,729 --> 00:41:16,020 有较慢的加速, 高四分之一英里倍, 754 00:41:16,020 --> 00:41:20,890 并使用少气,,所以 更高的英里每加仑。 755 00:41:20,890 --> 00:41:21,390 大。 756 00:41:21,390 --> 00:41:23,431 所以现在是时候 剧情是这样的。 757 00:41:23,431 --> 00:41:27,810 因此,让我们do--所以裸 骨子里,我们可以做plots-- 758 00:41:27,810 --> 00:41:35,280 因为我已经贴有该数据帧 before--我们可以做的地块,重量英里。 759 00:41:35,280 --> 00:41:38,762 760 00:41:38,762 --> 00:41:39,720 使这个有点大了。 761 00:41:39,720 --> 00:41:55,050 762 00:41:55,050 --> 00:41:57,350 在那里,我们基本上有一个 散点图,不过分 763 00:41:57,350 --> 00:41:58,690 是一种难以对这个看。 764 00:41:58,690 --> 00:42:04,860 765 00:42:04,860 --> 00:42:10,900 >> 我不记得随便什么 语法是不断变化的情节。 766 00:42:10,900 --> 00:42:14,100 所以我想这将是 一个很好的时间来培养, 767 00:42:14,100 --> 00:42:18,000 有一个非常好的内置的帮助 功能,帮助引号函数名。 768 00:42:18,000 --> 00:42:21,690 我们将调出基本 任何你想。 769 00:42:21,690 --> 00:42:28,010 770 00:42:28,010 --> 00:42:32,730 我想我会真正做到这一点 类型等于P代表点图。 771 00:42:32,730 --> 00:42:34,369 这是否能改变什么? 772 00:42:34,369 --> 00:42:35,160 不,不是真的。 773 00:42:35,160 --> 00:42:39,160 774 00:42:39,160 --> 00:42:39,660 好吧。 775 00:42:39,660 --> 00:42:46,760 776 00:42:46,760 --> 00:42:49,580 >> 出于某种原因,当我这样做 在我自己的电脑前一阵子, 777 00:42:49,580 --> 00:42:52,080 所有的散点 为更清晰。 778 00:42:52,080 --> 00:43:06,390 779 00:43:06,390 --> 00:43:13,970 总之,是散那种看得见? 780 00:43:13,970 --> 00:43:15,124 还有一个人也没有。 781 00:43:15,124 --> 00:43:16,165 有几个在那里,有几个。 782 00:43:16,165 --> 00:43:18,860 783 00:43:18,860 --> 00:43:21,185 那种你可以看到他们,对不对? 784 00:43:21,185 --> 00:43:24,310 所以,如果我们想增加一个最佳拟合线 这个情节在这里,这是一个有点裸露 785 00:43:24,310 --> 00:43:29,290 bones--让我有点漂亮。 786 00:43:29,290 --> 00:43:38,075 主要等于与重量。 787 00:43:38,075 --> 00:43:46,322 788 00:43:46,322 --> 00:43:49,740 英里每加仑。 789 00:43:49,740 --> 00:43:53,570 同样,你可以看到如何有用的 可选的参数在这里也有 790 00:43:53,570 --> 00:43:58,090 不必把事情一 一定的顺序与键盘参数 791 00:43:58,090 --> 00:44:01,600 当你有阴谋的,因为 这些都需要大量的争论。 792 00:44:01,600 --> 00:44:07,490 >> Xlab等于体重,体重,吨。 793 00:44:07,490 --> 00:44:10,091 794 00:44:10,091 --> 00:44:10,590 好吧。 795 00:44:10,590 --> 00:44:17,340 796 00:44:17,340 --> 00:44:21,480 好了,是啊,这个装置 正在有点烦。 797 00:44:21,480 --> 00:44:30,160 但是,你可以看到那种在那里, 还有一个侧面的图形标题。 798 00:44:30,160 --> 00:44:35,260 在这里there's--底部 这里有轴标签。 799 00:44:35,260 --> 00:44:37,700 我不记得随便 什么命令ars-- 800 00:44:37,700 --> 00:44:41,000 的功能是什么,以增加 这些标签和标题的大小, 801 00:44:41,000 --> 00:44:43,110 但他们在那里。 802 00:44:43,110 --> 00:44:46,625 >> 所以,如果我们要 添加最佳拟合线, 803 00:44:46,625 --> 00:44:49,250 我们可以做一些like--我 有语法写在这里。 804 00:44:49,250 --> 00:44:52,280 805 00:44:52,280 --> 00:45:11,130 所以请记住,我们只需要添加模型 是MPG,体重,mtcars。 806 00:45:11,130 --> 00:45:16,470 所以,如果我想添加一个最合适 行,我可以做的A,B线模型。 807 00:45:16,470 --> 00:45:18,556 只听轰的一声,我们有一个最佳拟合线。 808 00:45:18,556 --> 00:45:19,970 这是一种很难再见到。 809 00:45:19,970 --> 00:45:22,178 我很遗憾的 技术困难。 810 00:45:22,178 --> 00:45:25,230 但它运行基本 左上角到右下角。 811 00:45:25,230 --> 00:45:27,550 >> 而如果规模分别为 做大,你可以看到 812 00:45:27,550 --> 00:45:31,260 该拦截是你能 从汇总统计发现 813 00:45:31,260 --> 00:45:34,790 如果键入汇总的模式。 814 00:45:34,790 --> 00:45:40,130 好了,我希望每个人都得到 东西的感觉是什么 815 00:45:40,130 --> 00:45:42,030 R是,它是很好的。 816 00:45:42,030 --> 00:45:45,520 你可以做远远更好地块比 这对你自己的时间,如果你喜欢。 817 00:45:45,520 --> 00:45:50,100 818 00:45:50,100 --> 00:45:53,950 >> 因此,外国功能界面。 819 00:45:53,950 --> 00:46:00,330 这东西是不是典型 涵盖入门讲座 820 00:46:00,330 --> 00:46:03,560 或介绍任何东西河 821 00:46:03,560 --> 00:46:05,584 这是不太可能你会需要它。 822 00:46:05,584 --> 00:46:08,000 然而,我发现它有用 我自己的项目中来。 823 00:46:08,000 --> 00:46:10,984 而且也没有好 教程联机。 824 00:46:10,984 --> 00:46:12,900 所以我只是要 急于大家通过这个 825 00:46:12,900 --> 00:46:16,606 然后你可以自由地离开。 826 00:46:16,606 --> 00:46:18,480 这样一来,外国 功能界面是什么 827 00:46:18,480 --> 00:46:23,130 你可以用它来调用出来看看 与R.内部功能, 828 00:46:23,130 --> 00:46:29,850 R被建立在C.的r算术只是 C'S 64位浮点运算, 829 00:46:29,850 --> 00:46:32,852 这是double类型[听不清]。 830 00:46:32,852 --> 00:46:35,060 你可能想要做的 本作一堆的理由。 831 00:46:35,060 --> 00:46:39,250 为1,R被解释,这是 不编译成机器代码。 832 00:46:39,250 --> 00:46:42,170 所以,你可以重写你的 在C中,然后拿到内部循环 833 00:46:42,170 --> 00:46:45,920 使用R.像的优势 它更方便比C位 834 00:46:45,920 --> 00:46:48,899 它拥有更好的图形 设施和诸如此类的东西。 835 00:46:48,899 --> 00:46:51,690 并同时仍然能够获得 最高速度出了内循环, 836 00:46:51,690 --> 00:46:53,650 这是你真正需要它。 837 00:46:53,650 --> 00:46:56,330 >> 重用现有的C库, 这一点也很重要。 838 00:46:56,330 --> 00:47:00,320 如果你有一些C库一样, 我不知道,傅立叶变换, 839 00:47:00,320 --> 00:47:05,190 或者一些非常宙 统计过程中使用 840 00:47:05,190 --> 00:47:09,470 在高能天体物理 什么的,我不知道。 841 00:47:09,470 --> 00:47:13,058 高能天体物理 更是连想,我想。 842 00:47:13,058 --> 00:47:16,480 但是你可以做具有​​的,而不是 把它们写土生土长的R气口。 843 00:47:16,480 --> 00:47:22,725 而就the--又一遍,就像如果你 看在大多数讨论R的默认库, 844 00:47:22,725 --> 00:47:25,600 在内部,的内部是 要使用外部函数 845 00:47:25,600 --> 00:47:26,724 接口非常广泛。 846 00:47:26,724 --> 00:47:31,630 他们会喜欢的东西傅立叶 转换或计算的相关性 847 00:47:31,630 --> 00:47:34,890 系数C语言编写的,他们将 只是他们于R包装。 848 00:47:34,890 --> 00:47:38,230 该接口是一个 有点困难。我想 849 00:47:38,230 --> 00:47:43,750 其难度被夸大了 很多你会发现说明。 850 00:47:43,750 --> 00:47:46,200 但无论如何,这是一个有点混乱。 851 00:47:46,200 --> 00:47:48,650 而且我一直没能 找到一个很好的教程吧, 852 00:47:48,650 --> 00:47:51,980 所以这是它现在。 853 00:47:51,980 --> 00:47:55,360 同样,这全段 更供日后参考。 854 00:47:55,360 --> 00:47:57,687 不要担心复制 一切现在油价下滑。 855 00:47:57,687 --> 00:48:00,020 所以,下面的说明 对于类Unix系统, 856 00:48:00,020 --> 00:48:05,150 Linux的,BSD,OS X的我不知道 如何在Windows上运行, 857 00:48:05,150 --> 00:48:08,280 但是请大家不要做你的 在Windows上最后的项目。 858 00:48:08,280 --> 00:48:10,790 859 00:48:10,790 --> 00:48:12,460 你真的不想要。 860 00:48:12,460 --> 00:48:14,770 Unix的要好得多集 最多的休闲节目。 861 00:48:14,770 --> 00:48:19,320 862 00:48:19,320 --> 00:48:21,390 所以,基本上外国 功能界面。 863 00:48:21,390 --> 00:48:24,420 如果你想要写一个C 功能有R使用, 864 00:48:24,420 --> 00:48:27,250 它必须采取一切 参数作为指针。 865 00:48:27,250 --> 00:48:30,666 >> 所以对于单个值,这 意味着它指向的值。 866 00:48:30,666 --> 00:48:33,040 对于数组,这是一个指针 到第一元件,其 867 00:48:33,040 --> 00:48:36,750 是数组名实际上的意思。 868 00:48:36,750 --> 00:48:40,140 再次,这是你应该有 漂亮的完全下来后p将五位。 869 00:48:40,140 --> 00:48:43,334 数组名只是指针 到第一元件, 870 00:48:43,334 --> 00:48:44,750 浮点型为双。 871 00:48:44,750 --> 00:48:47,310 而你的函数必须返回void。 872 00:48:47,310 --> 00:48:50,810 唯一的办法,它可以 居然让R发生了什么 873 00:48:50,810 --> 00:48:54,410 是通过修改是R,得到存储器 它通过外部函数 874 00:48:54,410 --> 00:48:54,910 接口。 875 00:48:54,910 --> 00:48:58,180 876 00:48:58,180 --> 00:49:00,127 >> 所以我写了这个 例如这里,这是 877 00:49:00,127 --> 00:49:02,460 一个函数,计算使用 点积的两个向量。 878 00:49:02,460 --> 00:49:05,060 它有两个参数,VEC 1,VEC2, 它们是载体本身 879 00:49:05,060 --> 00:49:06,934 和则n,这是一个 长度,因为再次, 880 00:49:06,934 --> 00:49:12,630 R已经建成[听不清]查找 向量的长度,但C没有。 881 00:49:12,630 --> 00:49:16,182 在C语言中,载体是任意 内存分隔块。 882 00:49:16,182 --> 00:49:17,890 所以,这样你就可以 计算点积 883 00:49:17,890 --> 00:49:23,470 只是设置了这一点参数 零,然后遍历 884 00:49:23,470 --> 00:49:28,760 从1星N,因为 N为一个指针的长度, 885 00:49:28,760 --> 00:49:32,929 只是添加了一些 这一点参数。 886 00:49:32,929 --> 00:49:34,970 它可以是很好的做法 如果你打算怎么办 887 00:49:34,970 --> 00:49:37,270 这种写两个单独的C函数。 888 00:49:37,270 --> 00:49:41,970 其中一人has--其中一人刚 采用的参数和类型 889 00:49:41,970 --> 00:49:43,970 他们通常会在C. 890 00:49:43,970 --> 00:49:47,780 >> 因此,它需要一个数组 参数作为指针。 891 00:49:47,780 --> 00:49:57,090 但是,像N个单值参数, 它只是需要的值通过复制, 892 00:49:57,090 --> 00:49:57,917 没有指针。 893 00:49:57,917 --> 00:49:59,750 然后它不 [听不清]出指针。 894 00:49:59,750 --> 00:50:01,290 然后你就可以有 一个不同的,基本上, 895 00:50:01,290 --> 00:50:03,623 包装的功能,基本上 处理要求 896 00:50:03,623 --> 00:50:07,740 外国功能 接口让您。 897 00:50:07,740 --> 00:50:11,840 >> 你把这种在研发的方式是,一旦 你有你的函数用C写的, 898 00:50:11,840 --> 00:50:17,770 你型R CMD SHLIB,R 命令共享库, 899 00:50:17,770 --> 00:50:20,110 FOO点C,或任何 你的文件名是, 900 00:50:20,110 --> 00:50:23,020 和OS壳不是在R端子。 901 00:50:23,020 --> 00:50:25,200 这将创建一个 库叫做foo点左右。 902 00:50:25,200 --> 00:50:28,180 然后你就可以在加载 我们的脚本或交互 903 00:50:28,180 --> 00:50:32,310 使用命令DYN点负载。 904 00:50:32,310 --> 00:50:35,720 然后有一个函数 在研发所谓的C点。 905 00:50:35,720 --> 00:50:39,310 >> 这需要参数是 在C中的功能的第一名称 906 00:50:39,310 --> 00:50:40,970 要调用。 907 00:50:40,970 --> 00:50:43,920 然后将所有的参数 该功能, 908 00:50:43,920 --> 00:50:45,420 他们必须按正确的顺序。 909 00:50:45,420 --> 00:50:48,580 您必须使用这些类型 转换函数整数,如 910 00:50:48,580 --> 00:50:52,050 双,人品,并作为合乎逻辑的。 911 00:50:52,050 --> 00:50:54,710 然后,当它返回 列表,这又只是 912 00:50:54,710 --> 00:50:57,550 的关联数组 参数名称和值 913 00:50:57,550 --> 00:51:00,950 后功能运行。 914 00:51:00,950 --> 00:51:08,520 >> 所以在这种情况下,因为点刺有 参数VEC 1,VEC2,和int N,N-出来。 915 00:51:08,520 --> 00:51:11,980 为C点,我们有网点督促, 的函数的名称 916 00:51:11,980 --> 00:51:16,250 我们呼吁,VEC 1,VEC2,类型要挟。 917 00:51:16,250 --> 00:51:20,060 任一向量的长度, 我只是选择了VEC1随意。 918 00:51:20,060 --> 00:51:25,479 这将是更稳健的S个 整数最小长度VEC 1,全长VEC2。 919 00:51:25,479 --> 00:51:27,520 然后,就像双零, 因为我们真的不 920 00:51:27,520 --> 00:51:29,644 关心进入 输出参数,因为我们是 921 00:51:29,644 --> 00:51:32,270 将它设置为反正零。 922 00:51:32,270 --> 00:51:37,560 >> 然后结果将是一个 基本上大的关联数组 923 00:51:37,560 --> 00:51:42,090 VEC 1是什么,VEC2是什么。 924 00:51:42,090 --> 00:51:44,330 但我们感兴趣的 出来,所以我们可以得到这一点。 925 00:51:44,330 --> 00:51:47,780 这又是一个非常玩具的例子 外国功能界面。 926 00:51:47,780 --> 00:51:54,160 但是,如果你要计算点 在循环中大量载体的产品, 927 00:51:54,160 --> 00:51:56,960 或者如果你需要做的 别的东西在循环中, 928 00:51:56,960 --> 00:51:59,850 你不希望依赖于R, 里面确实有一些开销 929 00:51:59,850 --> 00:52:02,830 内置到它,这可能是有用的。 930 00:52:02,830 --> 00:52:05,870 >> 再次,这通常不是 一个介绍主题为R. 931 00:52:05,870 --> 00:52:08,571 这不是很好的记录。 932 00:52:08,571 --> 00:52:11,070 我只是包括它,因为 我发现它在过去是有用的。 933 00:52:11,070 --> 00:52:13,654 因此,不良做法。 934 00:52:13,654 --> 00:52:15,820 我提到,有一个 for循环中的功能。 935 00:52:15,820 --> 00:52:21,150 ,一般情况下不应在 的语言,而不是使用它。 936 00:52:21,150 --> 00:52:26,100 基于R如何实现迭代 在内部,也可以是缓慢的。 937 00:52:26,100 --> 00:52:28,540 他们也只是看起来很丑陋。 938 00:52:28,540 --> 00:52:32,410 >> ř处理向量非常漂亮,所以 通常情况下,你并不需要使用它。 939 00:52:32,410 --> 00:52:35,050 940 00:52:35,050 --> 00:52:38,900 然后,你通常可以 更换载体通常 941 00:52:38,900 --> 00:52:42,490 这些功能被称为高 为了功能,地图,减少, 942 00:52:42,490 --> 00:52:44,404 查找,或过滤器。 943 00:52:44,404 --> 00:52:46,320 我只是给一些 对这些例子做。 944 00:52:46,320 --> 00:52:49,957 地图是一个高阶函数,因为 它需要一个函数作为参数。 945 00:52:49,957 --> 00:52:52,290 所以,你可以给它一个功能, 你可以给它一个数组, 946 00:52:52,290 --> 00:52:54,640 和它将应用功能 到所述阵列的每一个元素 947 00:52:54,640 --> 00:52:55,681 并返回新的数组。 948 00:52:55,681 --> 00:52:58,035 949 00:52:58,035 --> 00:53:00,160 减少,基本上你给 一个数组,你给它 950 00:53:00,160 --> 00:53:02,930 一个函数有两个参数。 951 00:53:02,930 --> 00:53:07,100 它将首先,应用功能 第一个参数与一些启动值。 952 00:53:07,100 --> 00:53:09,440 然后,以该结果,在第二位。 953 00:53:09,440 --> 00:53:12,590 然后在第三这一结果, 然后,以该结果在第四。 954 00:53:12,590 --> 00:53:14,870 然后返回当它到达终点。 955 00:53:14,870 --> 00:53:17,620 因此,举例来说,如果你想 计算所有元素的总和 956 00:53:17,620 --> 00:53:23,240 在一个阵列,可能比你拨打减少 与[听不清]减小除 957 00:53:23,240 --> 00:53:26,620 功能,如FUNC A,B,返回a与b。 958 00:53:26,620 --> 00:53:28,960 然后启动值0。 959 00:53:28,960 --> 00:53:32,950 >> 而这一切,你可以找到他们 在R文档中所述, 960 00:53:32,950 --> 00:53:35,720 在任何一本教科书 函数式编程。 961 00:53:35,720 --> 00:53:38,330 还有这个类的 函数调用的应用功能, 962 00:53:38,330 --> 00:53:42,807 我don't--他们 有点难以解释, 963 00:53:42,807 --> 00:53:45,640 但如果你看看在[听不清] 预订的,我引用开头, 964 00:53:45,640 --> 00:53:48,615 他解释说他们颇能 他附录R上编程。 965 00:53:48,615 --> 00:53:51,599 966 00:53:51,599 --> 00:53:53,390 更多关于的做法, 追加到载体。 967 00:53:53,390 --> 00:53:57,570 968 00:53:57,570 --> 00:53:58,070 是吗? 969 00:53:58,070 --> 00:54:01,651 970 00:54:01,651 --> 00:54:02,900 我想我应该纠正。 971 00:54:02,900 --> 00:54:07,450 在该第一行中,vec的箭头, 那箭不应该存在。 972 00:54:07,450 --> 00:54:10,920 您可以分配到一个载体, 再次,通过采取它的长度加1 973 00:54:10,920 --> 00:54:13,220 和分配一些值来表示。 974 00:54:13,220 --> 00:54:18,970 这将延长载体,或者你 可以做VEC等于C,VEC newvalue中。 975 00:54:18,970 --> 00:54:21,540 同样,如果你用C与 一个参数作为一个载体, 976 00:54:21,540 --> 00:54:23,300 所产生的层次被夷为平地。 977 00:54:23,300 --> 00:54:27,160 所以,你只得到一个向量 多数民众赞成延长1。 978 00:54:27,160 --> 00:54:30,410 从来没有做到这一点。 979 00:54:30,410 --> 00:54:33,330 >> 你之所以 不应该这样做,这是这一点。 980 00:54:33,330 --> 00:54:37,430 当您分配一个载体,它 给它的存储器某个组块。 981 00:54:37,430 --> 00:54:40,680 如果增加了矢量大小, 它具有重新分配矢量 982 00:54:40,680 --> 00:54:43,820 别的地方。 983 00:54:43,820 --> 00:54:46,980 等再分配是相当昂贵的。 984 00:54:46,980 --> 00:54:50,530 我不会去到如何的详细信息 内存分配器实现 985 00:54:50,530 --> 00:54:57,280 在操作系统级, 但它需要大量的时间 986 00:54:57,280 --> 00:54:58,962 找到新的内存块。 987 00:54:58,962 --> 00:55:00,920 而且,如果你 重新分配很多很多 988 00:55:00,920 --> 00:55:03,500 逐渐增大 块,你最终 989 00:55:03,500 --> 00:55:06,420 有一种叫 内存碎片, 990 00:55:06,420 --> 00:55:09,390 其中可用的存储器是 分成许多小的块 991 00:55:09,390 --> 00:55:11,500 在内存分配器的观点。 992 00:55:11,500 --> 00:55:15,340 而且它越来越难 寻找记忆其他东西。 993 00:55:15,340 --> 00:55:19,455 所以,相反,如果你需要这样做, 你需要从一端长出矢量 994 00:55:19,455 --> 00:55:24,240 到下一个,追加,而不是将其 不断,你应预先分配它。 995 00:55:24,240 --> 00:55:29,310 VEC箭头,向量长度 等于1000,或什么的。 996 00:55:29,310 --> 00:55:33,200 >> 然后你可以只分配 为载体的其中一个值 997 00:55:33,200 --> 00:55:36,000 你一旦分配后一段时间。 998 00:55:36,000 --> 00:55:40,140 我碰到了这一点,再次,我的暑假作业 当我在写NRA差 999 00:55:40,140 --> 00:55:42,120 方程求解。 1000 00:55:42,120 --> 00:55:43,180 不是象征性的数字。 1001 00:55:43,180 --> 00:55:49,290 我们的想法是,一​​旦你有 一个值的解决方案, 1002 00:55:49,290 --> 00:55:51,240 你用它来计算下一个。 1003 00:55:51,240 --> 00:55:53,700 所以,我自然天真 倾向是说行, 1004 00:55:53,700 --> 00:55:56,930 所以我将开始与一个载体 这是一个很大的价值。 1005 00:55:56,930 --> 00:56:01,260 从下一个值计算 那去到我的解向量, 1006 00:56:01,260 --> 00:56:02,630 并追加了。 1007 00:56:02,630 --> 00:56:05,290 >> 创建别的东西,追加了。 1008 00:56:05,290 --> 00:56:08,120 它进行得非常,非常缓慢。 1009 00:56:08,120 --> 00:56:11,540 一旦我意识到了这一点 我改变了我的系统 1010 00:56:11,540 --> 00:56:16,020 从附加到这个矢量 像10,000至100,000倍, 1011 00:56:16,020 --> 00:56:18,910 只是预先分配一个矢量 而刚刚与运行。 1012 00:56:18,910 --> 00:56:22,100 我得到了超过1000倍的速度上升。 1013 00:56:22,100 --> 00:56:26,280 因此,这是一个非常普遍的 陷阱的R编程。 1014 00:56:26,280 --> 00:56:31,560 如果你需要建立一个向量 一块一块,预分配它。 1015 00:56:31,560 --> 00:56:35,360 1016 00:56:35,360 --> 00:56:40,240 >> 另一种常见的up--此行是我最后一次 幻灯片,不要worry--是错误处理。 1017 00:56:40,240 --> 00:56:42,890 R,坦率地说,不 真正做到这一点非常好。 1018 00:56:42,890 --> 00:56:45,010 有很多的 问题可能突然出现。 1019 00:56:45,010 --> 00:56:48,360 例如,如果你得到一个数组 或矢量出一个功能的 1020 00:56:48,360 --> 00:56:52,377 那你期待一个 价值从何而来,反之亦然, 1021 00:56:52,377 --> 00:56:55,460 你传递到一个函数, 你写了期待一个值, 1022 00:56:55,460 --> 00:56:57,270 这可能是一个问题。 1023 00:56:57,270 --> 00:57:01,440 >> 某些功能 因为这样做返回null,也就是说, 1024 00:57:01,440 --> 00:57:05,560 从阅读 不存在的键在列表中。 1025 00:57:05,560 --> 00:57:08,527 但null不是像C 如果您尝试阅读的地方 1026 00:57:08,527 --> 00:57:11,360 从旧的指针,[听不清] 以NULL指针,它只是赛格故障 1027 00:57:11,360 --> 00:57:14,109 如果你在调试器它 告诉你到底你在哪里。 1028 00:57:14,109 --> 00:57:17,080 1029 00:57:17,080 --> 00:57:20,772 相反,空将do--功能 会做不可预知的事情 1030 00:57:20,772 --> 00:57:21,730 如果他们两手空。 1031 00:57:21,730 --> 00:57:24,575 如果你交到最大空一样, 它会给你负无穷大。 1032 00:57:24,575 --> 00:57:27,230 1033 00:57:27,230 --> 00:57:28,190 所以,是的。 1034 00:57:28,190 --> 00:57:30,880 1035 00:57:30,880 --> 00:57:32,630 所以这事 我曾经当我有 1036 00:57:32,630 --> 00:57:34,771 换了一堆领域 在我的表结构 1037 00:57:34,771 --> 00:57:37,520 曾经在其他地方没有改变他们 当我读他们。 1038 00:57:37,520 --> 00:57:40,670 然后我得到了各种随机的 无边结果突然出现 1039 00:57:40,670 --> 00:57:43,080 我不知道他们来自何处。 1040 00:57:43,080 --> 00:57:45,310 不幸的是,有 没有REAL R严格模式 1041 00:57:45,310 --> 00:57:48,940 在那里,如果是你可以说 看起来似乎是一个错误, 1042 00:57:48,940 --> 00:57:51,960 只是停在那里,所以我可以 纪律和解决这个问题。 1043 00:57:51,960 --> 00:57:55,282 1044 00:57:55,282 --> 00:57:57,240 然而,也有一些是 所谓停止,如果不。 1045 00:57:57,240 --> 00:58:00,480 这相当于C中的断言, 如果你已经谈到了这一点。 1046 00:58:00,480 --> 00:58:02,690 我不认为C断言 为演讲题目, 1047 00:58:02,690 --> 00:58:06,370 但你的部门领导 可能已经过去。 1048 00:58:06,370 --> 00:58:10,393 而且,如果停止基本上没有采取任何 谓语,所以任何声明 1049 00:58:10,393 --> 00:58:11,824 可以是真或假。 1050 00:58:11,824 --> 00:58:13,490 如果这是假的,停止其计划。 1051 00:58:13,490 --> 00:58:18,260 它会告诉你什么行,你 是在什么条件下失败。 1052 00:58:18,260 --> 00:58:21,910 >> 这非常有用,例如, 完整性检查,功能的输入。 1053 00:58:21,910 --> 00:58:25,110 所以,如果你有一个函数 你期望的,也就是说, 1054 00:58:25,110 --> 00:58:29,640 如果你应该给我一个日期,我想 日期是长度为1的只是一个载体 1055 00:58:29,640 --> 00:58:31,735 与地方1到31之间。 1056 00:58:31,735 --> 00:58:34,420 1057 00:58:34,420 --> 00:58:36,170 如果没有的话,我知道 有什么地方出了问题。 1058 00:58:36,170 --> 00:58:40,280 而我选择在此之前停在那里 有随机敲代码为影响 1059 00:58:40,280 --> 00:58:44,190 这是很难跟踪到通过。 1060 00:58:44,190 --> 00:58:47,170 所以这是一个可能的 使用停机,如果不。 1061 00:58:47,170 --> 00:58:48,660 >> 总之,确定。 1062 00:58:48,660 --> 00:58:49,690 所以这是结束。 1063 00:58:49,690 --> 00:58:51,290 非常感谢你的光临。 1064 00:58:51,290 --> 00:58:53,710 我是一个业余级在此。 1065 00:58:53,710 --> 00:58:57,270 很抱歉,如果你觉得无聊或 困惑或你有什么。 1066 00:58:57,270 --> 00:59:01,670 我很高兴地采取通过电子邮件提问 在connorharris@college.harvard.edu。 1067 00:59:01,670 --> 00:59:07,230 这正好也给大家 看着这活或更高版本。 1068 00:59:07,230 --> 00:59:10,190 另外,虽然我不 一个TF,我也很 1069 00:59:10,190 --> 00:59:13,900 愿意作为一个非官方的 顾问的人谁是 1070 00:59:13,900 --> 00:59:15,460 使用R在作为最后的项目。 1071 00:59:15,460 --> 00:59:19,900 >> 如果你想的是, 那么就谈谈你的TF 1072 00:59:19,900 --> 00:59:23,750 然后给我写一封电子邮件,让 我知道你的工作内容 1073 00:59:23,750 --> 00:59:26,680 所以我可以设置会议 与你时间,如果你想。 1074 00:59:26,680 --> 00:59:27,990 所以,再一次,非常感谢你。 1075 00:59:27,990 --> 00:59:28,960 我希望你喜欢它。 1076 00:59:28,960 --> 00:59:29,450 >> 听众:[听不清]。 1077 00:59:29,450 --> 00:59:30,617 >> 当然:CONNER哈里斯。 1078 00:59:30,617 --> 00:59:34,910 >> 听众:什么样的项目 将一个CS的学生用R进行? 1079 00:59:34,910 --> 00:59:37,427 1080 00:59:37,427 --> 00:59:40,510 CONNER哈里斯:所以,如果你不这样做 东西是纯粹的数据挖掘, 1081 00:59:40,510 --> 00:59:43,790 例如,有 很多事情 1082 00:59:43,790 --> 00:59:46,692 你可以做与数据 挖掘和机器学习。 1083 00:59:46,692 --> 00:59:48,900 你可能想用R表示 的东西的组分。 1084 00:59:48,900 --> 00:59:52,022 我长大了,原来,这个例子 如果你正在写一个网站 1085 00:59:52,022 --> 00:59:54,730 并且要运行自动化 你的服务器的统计分析 1086 00:59:54,730 --> 00:59:57,990 在一定的时间每​​天日志, 这可能是东西是 1087 00:59:57,990 --> 01:00:01,260 很容易做到的只是简单 - [R脚本,可以安排 1088 01:00:01,260 --> 01:00:04,200 每晚运行,例如。 1089 01:00:04,200 --> 01:00:06,550 >> 我敢肯定,如果 有什么理由你 1090 01:00:06,550 --> 01:00:11,520 要统计或绘图功能 而有这种自动运行,而不是 1091 01:00:11,520 --> 01:00:13,790 具有互动 事情在Excel中, 1092 01:00:13,790 --> 01:00:16,750 例如,这件事情 你可能想用R进行。 1093 01:00:16,750 --> 01:00:21,190 所以在我任何问题离开? 1094 01:00:21,190 --> 01:00:21,690 没有? 1095 01:00:21,690 --> 01:00:24,960 好了,好了,再次感谢 您的光临。 1096 01:00:24,960 --> 01:00:29,417