1 00:00:00,000 --> 00:00:00,750 2 00:00:00,750 --> 00:00:09,800 >> [Jouer de la musique] 3 00:00:09,800 --> 00:00:13,014 4 00:00:13,014 --> 00:00:13,680 DUSTIN TRAN: Salut. 5 00:00:13,680 --> 00:00:14,980 Dustin de mon nom. 6 00:00:14,980 --> 00:00:18,419 Donc, je vais présenter Analyse des données dans l'arrêt R. 7 00:00:18,419 --> 00:00:19,710 Juste un peu de moi. 8 00:00:19,710 --> 00:00:24,320 Je suis actuellement étudiant diplômé en les sciences de l'ingénieur et appliquées. 9 00:00:24,320 --> 00:00:28,330 Je étudie l'intersection de l'apprentissage automatique et les statistiques 10 00:00:28,330 --> 00:00:31,375 donc l'analyse des données en R est vraiment fondamentale à ce 11 00:00:31,375 --> 00:00:33,790 Je fais sur une base quotidienne. 12 00:00:33,790 --> 00:00:35,710 >> Et R représente en particulier bon pour l'analyse des données 13 00:00:35,710 --> 00:00:39,310 parce que ce est très bon pour le prototypage. 14 00:00:39,310 --> 00:00:43,590 Et généralement, quand vous faites une sorte l'analyse des données, un grand nombre de problèmes 15 00:00:43,590 --> 00:00:44,920 vont cognitive. 16 00:00:44,920 --> 00:00:48,700 Et si vous voulez juste pour avoir certains vraiment bonne langue 17 00:00:48,700 --> 00:00:53,770 est juste bon pour faire des fonctions intégrées, par opposition 18 00:00:53,770 --> 00:00:57,430 d'avoir à traiter avec les choses faibles de niveau. 19 00:00:57,430 --> 00:01:01,040 Donc, au début, je vais juste d'introduire ce qui est R, pourquoi 20 00:01:01,040 --> 00:01:04,540 vous voulez l'utiliser, et puis allez sur dans quelque démonstration, 21 00:01:04,540 --> 00:01:07,060 et juste à partir de là. 22 00:01:07,060 --> 00:01:08,150 >> Alors, quelle est R? 23 00:01:08,150 --> 00:01:11,180 R est simplement une langue développée pour le calcul statistique 24 00:01:11,180 --> 00:01:12,450 et la visualisation. 25 00:01:12,450 --> 00:01:16,000 Donc ce que cela signifie, ce est que ce est un très excellent langage 26 00:01:16,000 --> 00:01:22,400 pour toute sorte de chose qui traite de l'incertitude ou la visualisation de données. 27 00:01:22,400 --> 00:01:24,850 Donc, vous avez tous ces distributions de probabilité. 28 00:01:24,850 --> 00:01:27,140 Il va y avoir des des fonctions intégrées. 29 00:01:27,140 --> 00:01:31,650 Vous aurez également excellente traçant paquets. 30 00:01:31,650 --> 00:01:34,110 >> Python est un autre concurrent langue pour les données. 31 00:01:34,110 --> 00:01:40,020 Et une chose que je trouve que R est beaucoup mieux à la visualisation est. 32 00:01:40,020 --> 00:01:45,200 Donc, ce que vous verrez dans la démo que bien, ce est juste un langage très intuitive 33 00:01:45,200 --> 00:01:48,050 qui fonctionne extrêmement bien. 34 00:01:48,050 --> 00:01:53,140 Il est également gratuit et open source, comme est tout autre bon langage, je suppose. 35 00:01:53,140 --> 00:01:55,440 >> Et voici, un tas de tout mots-clés jetés à vous. 36 00:01:55,440 --> 00:02:00,450 Ce est dynamique, ce qui signifie si vous avez un type spécifique attribué à un objet 37 00:02:00,450 --> 00:02:02,025 qu'il ne vous reste plus qu'à le changer à la volée. 38 00:02:02,025 --> 00:02:05,670 Il est paresseux il est donc intelligent sur comment il effectue des calculs. 39 00:02:05,670 --> 00:02:12,250 Fonctionnelle qui signifie qu'il peut vraiment fonctionner basé sur de fonctions afin anything-- 40 00:02:12,250 --> 00:02:16,910 toute sorte de manipulation vous êtes faisant, elle sera basée hors fonctions. 41 00:02:16,910 --> 00:02:20,162 >> Ainsi, les opérateurs binaires, par exemple, sont des fonctions intrinsèquement juste. 42 00:02:20,162 --> 00:02:21,870 Et tout ce qui vous allez faire est 43 00:02:21,870 --> 00:02:24,690 va être ruissellement se fonctions. 44 00:02:24,690 --> 00:02:27,140 Et puis orienté objet ainsi. 45 00:02:27,140 --> 00:02:30,930 >> Voici donc un complot XKCD. 46 00:02:30,930 --> 00:02:34,350 Non seulement parce que je me sens comme XKCD est fondamentale à toute sorte 47 00:02:34,350 --> 00:02:37,770 de la présentation, mais parce Je me sens comme ce vraiment 48 00:02:37,770 --> 00:02:42,160 martèle le point que beaucoup de la moment où vous faites une sorte de données 49 00:02:42,160 --> 00:02:46,570 analyse, le problème ne est pas tellement à quelle vitesse il se exécute, 50 00:02:46,570 --> 00:02:49,850 mais combien de temps ça va vous amène à programmer la tâche. 51 00:02:49,850 --> 00:02:54,112 Voici donc simplement analyser si stratégie a ou b est plus efficace. 52 00:02:54,112 --> 00:02:55,820 Cela va être quelque chose que vous êtes 53 00:02:55,820 --> 00:02:58,290 va traiter beaucoup avec en tri des langages de bas niveau 54 00:02:58,290 --> 00:03:03,440 où vous avez affaire à des défauts de seg, allocation de mémoire, initialisations, 55 00:03:03,440 --> 00:03:05,270 même en faisant les fonctions intégrées. 56 00:03:05,270 --> 00:03:09,920 Et ce genre de choses est tout traité très, très élégante dans R. 57 00:03:09,920 --> 00:03:12,839 >> Donc, juste pour marteler ce point, le principal goulet d'étranglement 58 00:03:12,839 --> 00:03:13,880 va être cognitive. 59 00:03:13,880 --> 00:03:17,341 Donc, l'analyse des données est un problème très difficile. 60 00:03:17,341 --> 00:03:19,340 Que vous fassiez l'apprentissage de la machine ou vous êtes 61 00:03:19,340 --> 00:03:22,550 faire juste une sorte de l'exploration de données de base, 62 00:03:22,550 --> 00:03:25,290 vous ne voulez pas avoir de prendre un document 63 00:03:25,290 --> 00:03:27,440 puis compiler quelque chose chaque fois que vous 64 00:03:27,440 --> 00:03:31,010 voulez voir ce que une colonne ressemble, ce notamment entrées dans une matrice 65 00:03:31,010 --> 00:03:32,195 ressemble. 66 00:03:32,195 --> 00:03:34,320 Donc, vous voulez juste pour avoir certains l'interface vraiment agréable 67 00:03:34,320 --> 00:03:37,740 vous pouvez exécuter une fonction simple qui indexe à quelque 68 00:03:37,740 --> 00:03:41,870 vous souhaitez et juste exécutez à partir de là. 69 00:03:41,870 --> 00:03:44,190 Et vous avez besoin domaine langues spécifiques pour cela. 70 00:03:44,190 --> 00:03:51,750 Et R va vraiment vous aider à définir la problème et le résoudre de cette manière. 71 00:03:51,750 --> 00:03:58,690 >> Donc, voici un graphique montrant la programmation la popularité de R comme il a disparu au fil du temps. 72 00:03:58,690 --> 00:04:04,060 Donc, comme vous pouvez le voir, comme 2013 ou donc ça fait sauter énormément. 73 00:04:04,060 --> 00:04:09,570 Et cela a été à cause de cela grande tendance dans l'industrie de la technologie 74 00:04:09,570 --> 00:04:10,590 à propos de big data. 75 00:04:10,590 --> 00:04:13,010 En outre, non seulement la technologie l'industrie, mais vraiment 76 00:04:13,010 --> 00:04:16,490 toute that-- de l'industrie parce beaucoup d'industries 77 00:04:16,490 --> 00:04:20,589 sont sorte de fondamental pour essayer de résoudre ces problèmes. 78 00:04:20,589 --> 00:04:24,590 Et généralement, vous pouvez avoir une bonne façon de mesurer ces problèmes 79 00:04:24,590 --> 00:04:29,720 ou même de les définir ou les résoudre en utilisant des données. 80 00:04:29,720 --> 00:04:35,430 Donc, je pense que maintenant R est le 11e langue la plus populaire sur TIOBE 81 00:04:35,430 --> 00:04:38,200 et il a été de plus en plus depuis lors. 82 00:04:38,200 --> 00:04:40,740 83 00:04:40,740 --> 00:04:43,080 >> Alors, voici un peu plus caractéristiques de R. Il a 84 00:04:43,080 --> 00:04:46,900 un nombre énorme de paquets et pour toutes ces choses différentes. 85 00:04:46,900 --> 00:04:52,470 Donc, chaque fois que vous avez un certain problème, la plupart 86 00:04:52,470 --> 00:04:55,060 le temps R aura cette fonction pour vous. 87 00:04:55,060 --> 00:04:58,520 Donc, si vous voulez construire une sorte de machine 88 00:04:58,520 --> 00:05:02,770 algorithme d'apprentissage appelé Forêt aléatoire ou les arbres de décision, 89 00:05:02,770 --> 00:05:07,530 ou même essayer de prendre la moyenne des une fonction ou un de ces trucs, 90 00:05:07,530 --> 00:05:10,000 R aura que. 91 00:05:10,000 --> 00:05:14,190 >> Et si vous ne vous souciez optimisation, une chose qui est commune 92 00:05:14,190 --> 00:05:17,430 est qu'une fois que vous avez terminé prototypage une sorte de langage de haut niveau, 93 00:05:17,430 --> 00:05:19,810 vous jeter ce in-- Vous aurez juste port plus 94 00:05:19,810 --> 00:05:21,550 à un langage de bas niveau. 95 00:05:21,550 --> 00:05:26,090 Ce qui est bien R est qu'une fois que vous êtes prototypage fait, vous pouvez exécuter C ++, 96 00:05:26,090 --> 00:05:29,510 ou Fortran, ou l'une de ces ceux de niveau inférieur directement dans R. 97 00:05:29,510 --> 00:05:32,320 Donc, ce est vraiment une fonctionnalité intéressante à propos de R, 98 00:05:32,320 --> 00:05:35,930 si vous vous souciez vraiment le point d'optimisation. 99 00:05:35,930 --> 00:05:39,490 >> Et ce est également très bon pour les visualisations Web. 100 00:05:39,490 --> 00:05:43,530 Donc D3.js, par exemple, est Je suppose un autre séminaire 101 00:05:43,530 --> 00:05:45,130 que nous avons présenté aujourd'hui. 102 00:05:45,130 --> 00:05:48,510 Et ce est vraiment génial pour faire des visualisations interactives. 103 00:05:48,510 --> 00:05:54,460 Et D3.js suppose que vous avez une sorte de données à tracer 104 00:05:54,460 --> 00:05:58,080 et R est un excellent moyen d'être en mesure de le faire l'analyse de données avant de l'exporter 105 00:05:58,080 --> 00:06:04,220 vers D3.js ou même simplement de fonctionner D3.js commandes en R lui-même, 106 00:06:04,220 --> 00:06:08,240 ainsi que tous ceux-ci d'autres bibliothèques ainsi. 107 00:06:08,240 --> 00:06:13,041 >> Donc, ce était juste l'introduction de ce qui est R et pourquoi vous pourriez utiliser. 108 00:06:13,041 --> 00:06:14,790 Donc, je espère, je ai vous a convaincu quelque chose 109 00:06:14,790 --> 00:06:18,460 à propos juste essayer de voir ce que ce est. 110 00:06:18,460 --> 00:06:23,930 Donc, je vais aller de l'avant et passer par certains principes de base sur les objets R 111 00:06:23,930 --> 00:06:26,150 et ce que vous pouvez vraiment faire. 112 00:06:26,150 --> 00:06:29,690 >> Donc, voici juste un tas de commandes mathématiques. 113 00:06:29,690 --> 00:06:35,000 Alors dites you're-- vous voulez construire vous langue et vous voulez juste 114 00:06:35,000 --> 00:06:38,080 d'avoir un tas de différents outils. 115 00:06:38,080 --> 00:06:42,520 Toute sorte d'opération que vous pensez que vous feriez voulons, ce est à peu près va être dans l'arrêt R. 116 00:06:42,520 --> 00:06:44,150 >> Voici donc 2 + 2. 117 00:06:44,150 --> 00:06:46,090 Voici 2 fois pi. 118 00:06:46,090 --> 00:06:51,870 R a un tas de constantes intégrées que vous utilisez fréquemment comme pi, e. 119 00:06:51,870 --> 00:06:56,230 >> Et puis, voici 7 plus runif, afin runif de 1. 120 00:06:56,230 --> 00:07:02,450 Ce est une fonction qui est produit une aléatoire uniforme entre 0 et 1. 121 00:07:02,450 --> 00:07:04,400 Et puis il ya trois à la puissance de quatre. 122 00:07:04,400 --> 00:07:06,430 Il ya des racines carrées. 123 00:07:06,430 --> 00:07:07,270 >> Il ya journal. 124 00:07:07,270 --> 00:07:14,500 Alors connectez fera de base exponentielle par lui-même. 125 00:07:14,500 --> 00:07:18,337 Et puis, si vous spécifiez une base, puis vous pouvez faire ce que vous voulez de base. 126 00:07:18,337 --> 00:07:19,920 Et puis voici quelques autres commandes. 127 00:07:19,920 --> 00:07:22,180 Donc, vous avez 23 mod 2. 128 00:07:22,180 --> 00:07:24,910 Ensuite, vous avez le reste. 129 00:07:24,910 --> 00:07:27,110 Ensuite, vous avez scientifiques notation si vous aussi 130 00:07:27,110 --> 00:07:34,060 envie de faire un peu plus et des choses plus compliquées. 131 00:07:34,060 --> 00:07:37,320 >> Voici donc affectation. 132 00:07:37,320 --> 00:07:40,830 Donc missions typiques R est effectuée avec une flèche 133 00:07:40,830 --> 00:07:43,440 il est donc moins de puis le trait d'union. 134 00:07:43,440 --> 00:07:47,250 Donc ici, je suis juste attribution 3 à la val variable. 135 00:07:47,250 --> 00:07:50,160 >> Et puis je imprimer val puis il affiche trois. 136 00:07:50,160 --> 00:07:53,920 Par défaut dans la R interprète, il imprimera les choses pour vous 137 00:07:53,920 --> 00:07:57,280 de sorte que vous ne avez pas à spécifier imprimer un val chaque fois que vous souhaitez imprimer quelque chose. 138 00:07:57,280 --> 00:08:00,200 Vous pouvez juste faire val et alors il va le faire pour vous. 139 00:08:00,200 --> 00:08:04,380 >> En outre, vous pouvez utiliser égaux technique comme un opérateur d'affectation. 140 00:08:04,380 --> 00:08:07,190 Il ya de légères subtilités entre l'utilisation de la flèche 141 00:08:07,190 --> 00:08:10,730 opérateur et les égaux opérateur pour les affectations. 142 00:08:10,730 --> 00:08:15,470 Surtout, par convention, tout le monde va juste utiliser l'opérateur de flèche. 143 00:08:15,470 --> 00:08:21,850 >> Et ici, je vais confier cette notation oblique appelé une virgule six. 144 00:08:21,850 --> 00:08:26,010 Cela génère un vecteur de 1 à 6. 145 00:08:26,010 --> 00:08:29,350 Et cela vraiment sympa car alors vous venez d'attribuer le vecteur d'val 146 00:08:29,350 --> 00:08:34,270 et qui fonctionne par lui-même. 147 00:08:34,270 --> 00:08:37,799 >> Donc, ce est déjà en cours à partir d'un single-- une donnée très intuitive 148 00:08:37,799 --> 00:08:41,070 la structure de seulement un double de un certain type de Type dans un vecteur 149 00:08:41,070 --> 00:08:45,670 et qui permettra de recueillir tous les valeurs scalaires pour vous. 150 00:08:45,670 --> 00:08:50,770 Ainsi, après allant de scalaire, vous avoir des objets R et ce est un vecteur. 151 00:08:50,770 --> 00:08:55,610 Un vecteur est toute sorte de collection de même type. 152 00:08:55,610 --> 00:08:58,150 Donc, voici un tas de vecteurs. 153 00:08:58,150 --> 00:08:59,800 >> Donc, ce est numérique. 154 00:08:59,800 --> 00:09:02,440 Numérique est la façon de dire R double. 155 00:09:02,440 --> 00:09:07,390 Et donc, par défaut, toute nombre sera un double. 156 00:09:07,390 --> 00:09:13,150 >> Donc si vous avez des c 1,1, 3, 5.7 négative, le c est une fonction. 157 00:09:13,150 --> 00:09:16,760 Ce enchaîne tous les trois numéros dans un vecteur. 158 00:09:16,760 --> 00:09:19,619 Et ce sera être-- si vous remarquez 3 par lui-même, 159 00:09:19,619 --> 00:09:21,910 Normalement, il faut assumer que ce est comme un entier, 160 00:09:21,910 --> 00:09:25,050 mais parce que tous les vecteurs sont de même type, 161 00:09:25,050 --> 00:09:28,660 ce est un vecteur de doubles ou numérique dans ce cas. 162 00:09:28,660 --> 00:09:34,920 >> rnorm est une fonction qui génère variables-- normale standard 163 00:09:34,920 --> 00:09:36,700 ou des valeurs normales standard. 164 00:09:36,700 --> 00:09:38,360 Et je spécifiant deux d'entre eux. 165 00:09:38,360 --> 00:09:43,840 Donc je fais rnorm 2, attribuant cela à devs, et puis je suis imprimer devs. 166 00:09:43,840 --> 00:09:47,350 Donc, ce ne sont que deux valeurs normales aléatoires. 167 00:09:47,350 --> 00:09:50,060 >> Et puis si vous faites Ints vous vous souciez de nombres entiers. 168 00:09:50,060 --> 00:09:54,650 Donc, ce est juste sur la mémoire répartition et l'épargne taille de la mémoire. 169 00:09:54,650 --> 00:10:01,460 Donc, vous auriez à ajouter vos numéros de la capitale L. 170 00:10:01,460 --> 00:10:04,170 >> En général, il se agit Historique de la notation R 171 00:10:04,170 --> 00:10:06,940 pour quelque chose appelé entier long. 172 00:10:06,940 --> 00:10:09,880 Donc, la plupart du temps, vous aurez avoir affaire avec des doubles. 173 00:10:09,880 --> 00:10:15,180 Et si jamais vous le fera plus tard sur optimiser votre code, 174 00:10:15,180 --> 00:10:18,110 vous pouvez simplement ajouter ces L's après ou pendant celle-ci 175 00:10:18,110 --> 00:10:22,280 si vous êtes comme prémonitoire de ce vous allez faire ces variables. 176 00:10:22,280 --> 00:10:25,340 177 00:10:25,340 --> 00:10:26,890 >> Voici donc un vecteur de caractères. 178 00:10:26,890 --> 00:10:31,440 Donc, encore une fois, je suis concaténation trois cordes cette fois. 179 00:10:31,440 --> 00:10:36,230 Notez que doubles cordes et cordes simples sont les mêmes dans R. 180 00:10:36,230 --> 00:10:41,000 Je ai donc Arthur et Marvin et ainsi quand je l'imprimer, chacun d'eux 181 00:10:41,000 --> 00:10:43,210 allons montrer cordes doubles. 182 00:10:43,210 --> 00:10:45,880 Et si vous voulez aussi inclure la chaîne double ou simple 183 00:10:45,880 --> 00:10:50,070 dans vos personnages, vous pouvez soit alterner vos cordes. 184 00:10:50,070 --> 00:10:53,540 >> Donc Marvin pour le second élément, ce est 185 00:10:53,540 --> 00:10:56,380 vais vous show-- avoir juste cordes doubles 186 00:10:56,380 --> 00:10:59,050 puis une seule chaîne si ce est alternative. 187 00:10:59,050 --> 00:11:04,040 Sinon, si vous souhaitez utiliser une double opérateur de chaîne dans une double chaîne 188 00:11:04,040 --> 00:11:07,090 lorsque vous déclarer, puis il suffit d'utiliser l'opérateur d'échappement. 189 00:11:07,090 --> 00:11:10,600 Donc, vous faites la barre oblique inverse à double chaîne. 190 00:11:10,600 --> 00:11:13,330 >> Et enfin, nous avons aussi avoir vecteurs logiques. 191 00:11:13,330 --> 00:11:15,890 Donc si vrai logical-- et le faux, et ils sont 192 00:11:15,890 --> 00:11:18,880 va être tout en majuscules. 193 00:11:18,880 --> 00:11:22,370 Et puis, encore une fois, je suis concaténation eux et ensuite de les affecter à bools. 194 00:11:22,370 --> 00:11:24,590 Donc bools va montrer vous TRUE, FALSE et TRUE. 195 00:11:24,590 --> 00:11:28,280 196 00:11:28,280 --> 00:11:31,620 >> Voici donc l'indexation vectorisé. 197 00:11:31,620 --> 00:11:34,870 Donc, au début, je ai prends un function-- 198 00:11:34,870 --> 00:11:39,230 cela se appelle un sequence-- séquence de 2 à 12. 199 00:11:39,230 --> 00:11:42,490 Et je vais prendre une séquence en deux. 200 00:11:42,490 --> 00:11:46,660 Donc, il va faire 2, 4, 6, 8, 10 et 12. 201 00:11:46,660 --> 00:11:50,080 Et puis, je suis indexation pour obtenir le troisième élément. 202 00:11:50,080 --> 00:11:55,770 >> Donc, une chose à garder à l'esprit est ce que R index par à partir de 1. 203 00:11:55,770 --> 00:12:00,550 Donc Vals 3 va donner vous le troisième élément. 204 00:12:00,550 --> 00:12:04,580 Ce est une sorte de différent des autres langues où il commence à partir de zéro. 205 00:12:04,580 --> 00:12:09,780 Donc, en C ou C ++, par exemple, vous êtes allez obtenir le quatrième élément. 206 00:12:09,780 --> 00:12:13,280 >> Et voici vals 3-5. 207 00:12:13,280 --> 00:12:16,030 Donc, une chose ce est vraiment cool ce est que vous 208 00:12:16,030 --> 00:12:20,410 peut générer des variables temporaires à l'intérieur et puis juste les utiliser à la volée. 209 00:12:20,410 --> 00:12:21,960 Voici donc 3-5. 210 00:12:21,960 --> 00:12:25,070 Je suis donc générer un vecteur 3, 4 et 5, puis 211 00:12:25,070 --> 00:12:29,700 Je indexation pour obtenir la troisième, quatrième et cinquième éléments. 212 00:12:29,700 --> 00:12:32,280 >> Pareillement, vous pouvez abstraite ce faire juste 213 00:12:32,280 --> 00:12:35,280 toute sorte d'un vecteur qui vous donne l'indexation. 214 00:12:35,280 --> 00:12:40,050 Voici donc vals, puis le première, troisième et sixième éléments. 215 00:12:40,050 --> 00:12:42,800 Et puis, si vous voulez faire un complément, 216 00:12:42,800 --> 00:12:45,210 de sorte que vous venez de faire le signe moins par la suite et qui va 217 00:12:45,210 --> 00:12:48,600 vous donner tout ce qui ne est pas le premier, troisième ou sixième élément. 218 00:12:48,600 --> 00:12:51,590 Ce sera donc 4, 8 et 10. 219 00:12:51,590 --> 00:12:54,380 >> Et si vous voulez obtenir encore plus avancé, 220 00:12:54,380 --> 00:12:57,610 vous pouvez concaténer vecteurs booléens. 221 00:12:57,610 --> 00:13:05,210 Donc, cet indice va vous donner ce vecteur booléenne de longueur 6. 222 00:13:05,210 --> 00:13:07,280 Donc représentant virgule TRUE 3. 223 00:13:07,280 --> 00:13:09,680 Cela répéter TRUE trois fois. 224 00:13:09,680 --> 00:13:12,900 Donc, cela vous donnera une vecteur TRUE, TRUE, TRUE. 225 00:13:12,900 --> 00:13:17,470 >> rep FALSE 4-- cela va vous donner un vecteur de FAUX, FAUX, FAUX, FAUX. 226 00:13:17,470 --> 00:13:21,280 Et puis c va concaténer ces deux booléens ensemble. 227 00:13:21,280 --> 00:13:24,090 Donc, vous allez obtenir trois Trues et puis quatre faux. 228 00:13:24,090 --> 00:13:28,460 >> Alors que lorsque vous vals d'index, vous êtes aller pour obtenir le VRAI, VRAI,. 229 00:13:28,460 --> 00:13:31,420 Donc cela va dire oui, Je veux que ces trois éléments. 230 00:13:31,420 --> 00:13:33,520 Et puis FAUX, FAUX, FAUX, FAUX va 231 00:13:33,520 --> 00:13:37,140 de dire non, je ne veux pas que ces éléments donc il ne va pas les renvoyer. 232 00:13:37,140 --> 00:13:41,490 >> Et je crois qu'il ya effectivement une faute de frappe ici parce que ce est de dire la répétition TRUE 3 233 00:13:41,490 --> 00:13:47,990 et répéter FALSE 4, et techniquement, vous seulement six éléments ont donc répéter FALSE, 234 00:13:47,990 --> 00:13:50,470 il devrait être répétition FALSE 3. 235 00:13:50,470 --> 00:13:55,260 Je pense que R est également assez intelligente telles que si vous suffit de spécifier quatre ici, puis 236 00:13:55,260 --> 00:13:56,630 il sera même pas erreur sur. 237 00:13:56,630 --> 00:13:58,480 Il va juste vous donner cette valeur. 238 00:13:58,480 --> 00:14:00,970 Donc, il va simplement ignorer cette quatrième FALSE. 239 00:14:00,970 --> 00:14:05,310 240 00:14:05,310 --> 00:14:09,270 >> Voici donc l'affectation vectorisé. 241 00:14:09,270 --> 00:14:15,480 Donc set.seed-- cela crée juste le semences pour nombres pseudo-aléatoires. 242 00:14:15,480 --> 00:14:20,110 Je suis donc mise à la graine de 42, ce qui signifie que si je produis 243 00:14:20,110 --> 00:14:22,950 trois aléatoire normale les valeurs, et puis si vous 244 00:14:22,950 --> 00:14:27,400 RUN set.seed sur votre propre ordinateur en utilisant 42 la même valeur, 245 00:14:27,400 --> 00:14:30,990 alors vous obtenez également le mêmes trois normales aléatoires. 246 00:14:30,990 --> 00:14:33,411 >> Donc, ce est vraiment bon pour la reproductibilité. 247 00:14:33,411 --> 00:14:35,910 Habituellement, lorsque vous faites une certaine type d'analyse scientifique, 248 00:14:35,910 --> 00:14:37,230 vous voulez mettre la graine. 249 00:14:37,230 --> 00:14:41,270 De cette façon, d'autres scientifiques pouvez juste reproduire exactement le même code que vous avez 250 00:14:41,270 --> 00:14:44,790 fait parce qu'ils auront l'exacte mêmes variables aléatoires that-- ou aléatoire 251 00:14:44,790 --> 00:14:47,270 valeurs que vous avez prises aussi bien. 252 00:14:47,270 --> 00:14:49,870 253 00:14:49,870 --> 00:14:53,910 >> Et donc l'affectation vectorisé ici est de montrer les vals 1-2. 254 00:14:53,910 --> 00:14:59,290 Il faut donc les deux premiers éléments de Vals et les affecte à 0. 255 00:14:59,290 --> 00:15:03,940 Et puis, vous pouvez aussi juste faire le même chose avec les booléens. 256 00:15:03,940 --> 00:15:09,340 >> Donc vals ne est pas égale à cette volonté 0-- vous donner une fausse vectoriel, FALSE, TRUE 257 00:15:09,340 --> 00:15:10,350 dans ce cas. 258 00:15:10,350 --> 00:15:13,770 Et puis, il va dire toute de ces indices qui était vrai, 259 00:15:13,770 --> 00:15:15,270 alors il va attribuer ce à 5. 260 00:15:15,270 --> 00:15:18,790 Il faut donc le troisième élément ici et il assigne à 5. 261 00:15:18,790 --> 00:15:22,300 >> Et ce est vraiment sympa par rapport aux langages de bas niveau 262 00:15:22,300 --> 00:15:25,560 où vous devez utiliser pour les boucles de faire tout ce genre de choses vectorisé 263 00:15:25,560 --> 00:15:30,281 parce que ce est très intuitif et ce est un simple one-liner. 264 00:15:30,281 --> 00:15:32,030 Et ce qui est formidable à propos notation vectorisé 265 00:15:32,030 --> 00:15:37,020 ce est que dans R, ceux-ci sont en quelque sorte intégré de sorte qu'ils sont presque aussi rapide 266 00:15:37,020 --> 00:15:42,490 que faire dans un langage de bas niveau comme plutôt que de faire une boucle dans la R 267 00:15:42,490 --> 00:15:46,317 et ayant alors qu'il fasse l'indexation dynamique elle-même. 268 00:15:46,317 --> 00:15:48,900 Et ce sera plus lent que de faire ce genre de chose vectorisé 269 00:15:48,900 --> 00:15:55,950 où il peut le faire en parallèle, où qu'il fait dans le filetage essentiellement. 270 00:15:55,950 --> 00:15:58,650 >> Voici donc vectorisée opérations. 271 00:15:58,650 --> 00:16:04,920 Je suis donc générer une valeur de 1 à 3, attribuer à cette vec1, 3 à 5, vec2, 272 00:16:04,920 --> 00:16:05,950 les additionner. 273 00:16:05,950 --> 00:16:11,490 Il les ajoute composante par composante, afin ce est une plus 3, 2 plus 4, et ainsi de suite. 274 00:16:11,490 --> 00:16:13,330 >> vec1 fois vec2. 275 00:16:13,330 --> 00:16:16,110 Ceci multiplie les deux valeurs composant sage. 276 00:16:16,110 --> 00:16:21,830 Donc, ce est une fois 3, 2 fois 4, puis 3 fois 5. 277 00:16:21,830 --> 00:16:28,250 >> Et puis, même, vous pouvez également faire comparisons-- comparaisons logiques. 278 00:16:28,250 --> 00:16:33,640 Donc, ce est FAUX VRAI FAUX dans ce une affaire parce que ne est pas supérieur à 3, 279 00:16:33,640 --> 00:16:35,920 2 ne est pas supérieur à 4. 280 00:16:35,920 --> 00:16:41,160 Ce est, je suppose, une autre faute de frappe, 3 est certainement pas supérieur à 5. 281 00:16:41,160 --> 00:16:41,660 Ouais. 282 00:16:41,660 --> 00:16:45,770 Et ainsi vous pouvez juste faire tout ces opérations simples 283 00:16:45,770 --> 00:16:48,350 parce que leur héritée parmi les classes elles-mêmes. 284 00:16:48,350 --> 00:16:51,110 285 00:16:51,110 --> 00:16:52,580 >> Donc, ce était juste le vecteur. 286 00:16:52,580 --> 00:16:56,530 Et ce est en quelque sorte le plus fondamental R parce objet donné un vecteur, 287 00:16:56,530 --> 00:16:59,170 vous pouvez construire des objets plus avancés. 288 00:16:59,170 --> 00:17:00,560 >> Alors, voici une matrice. 289 00:17:00,560 --> 00:17:05,030 Ce est essentiellement l'abstraction de ce qu'est une matrice elle-même. 290 00:17:05,030 --> 00:17:10,099 Donc dans ce cas, il est trois différente vecteurs, où chacun est une colonne, 291 00:17:10,099 --> 00:17:12,710 ou vous pouvez considérer que chacun est une rangée. 292 00:17:12,710 --> 00:17:18,250 >> Je suis donc stocker une matrice de 1 à 9 puis je suis spécifiant trois rangées. 293 00:17:18,250 --> 00:17:23,364 Donc 1-9 vous donnera un vecteur 1, 2, 3, 4, 5, 6, et tout le chemin à 9. 294 00:17:23,364 --> 00:17:29,250 >> Une chose à garder à l'esprit est que R magasins valeurs en format colonne majeure. 295 00:17:29,250 --> 00:17:34,160 Donc, en d'autres termes, quand vous voyez une à 9, il va stocker eux-- 296 00:17:34,160 --> 00:17:36,370 ça va être 1, 2, 3 dans la première colonne, 297 00:17:36,370 --> 00:17:38,510 puis il va faire 4, 5, 6 dans la deuxième colonne, 298 00:17:38,510 --> 00:17:41,440 puis 7, 8, 9 dans la troisième colonne. 299 00:17:41,440 --> 00:17:45,570 >> Et voici quelques autres fonctions communes que vous pouvez utiliser. 300 00:17:45,570 --> 00:17:49,650 Donc mat dim, cela vous donnera les dimensions de la matrice. 301 00:17:49,650 --> 00:17:52,620 Il va vous revenir un vecteur de la dimension. 302 00:17:52,620 --> 00:17:55,580 Donc dans ce cas, parce notre matrice est 3 par 3, 303 00:17:55,580 --> 00:18:01,900 ça va vous donner un vecteur numérique ce est 3 3. 304 00:18:01,900 --> 00:18:05,270 >> Et ici, ce est juste montrer la multiplication de matrices. 305 00:18:05,270 --> 00:18:11,970 Donc, en général, si vous faites juste asterisk-- afin mat astérisque mat-- 306 00:18:11,970 --> 00:18:15,380 cela va être fonctionnement du composant sage- 307 00:18:15,380 --> 00:18:17,300 ou ce qu'on appelle le produit de Hadamard. 308 00:18:17,300 --> 00:18:21,310 Donc, il va faire chaque élément constitutif sage. 309 00:18:21,310 --> 00:18:23,610 Cependant, si vous voulez matrice multiplication-- 310 00:18:23,610 --> 00:18:29,380 si multipliant les première fois en rangée la première colonne de la deuxième matrice 311 00:18:29,380 --> 00:18:34,510 et ainsi de on-- vous pouvez utiliser cette opération pour cent. 312 00:18:34,510 --> 00:18:38,110 >> Et t de tapis est juste une opération de transposition. 313 00:18:38,110 --> 00:18:42,590 Je dis donc prendre la transposer dans la matrice, multiplier par la matrice 314 00:18:42,590 --> 00:18:43,090 lui-même. 315 00:18:43,090 --> 00:18:45,006 Et puis ça va revenir à vous un autre 3 316 00:18:45,006 --> 00:18:50,700 de 3 matrice démontrant le produit que vous voudriez. 317 00:18:50,700 --> 00:18:53,750 >> Et donc ce était matrice. 318 00:18:53,750 --> 00:18:56,020 Voici ce que l'on appelle une trame de données. 319 00:18:56,020 --> 00:19:00,780 Une trame de données que vous pouvez penser que une matrice, chaque colonne elle-même, mais 320 00:19:00,780 --> 00:19:02,990 va être d'un type différent. 321 00:19:02,990 --> 00:19:07,320 >> Donc, ce est vraiment cool sur les données cadres est que dans l'analyse des données lui-même, 322 00:19:07,320 --> 00:19:11,260 vous allez avoir tout cela données hétérogènes et tout cela vraiment 323 00:19:11,260 --> 00:19:15,640 les choses en désordre où chaque des colonnes eux-mêmes peuvent être de différents types. 324 00:19:15,640 --> 00:19:21,460 Donc ici, je veux dire créer un trame de données, faire ints 1-3, 325 00:19:21,460 --> 00:19:24,750 puis ont aussi un vecteur de caractères. 326 00:19:24,750 --> 00:19:28,470 Donc je peux indice par le biais chacune de ces colonnes 327 00:19:28,470 --> 00:19:30,930 et puis je vais chercher les valeurs elles-mêmes. 328 00:19:30,930 --> 00:19:34,370 Et vous pouvez également faire une sorte des opérations sur des trames de données. 329 00:19:34,370 --> 00:19:38,040 Et la plupart du temps lorsque vous êtes faire de l'analyse de données ou une sorte 330 00:19:38,040 --> 00:19:42,042 de prétraitement, vous serez travailler avec ces structures de données 331 00:19:42,042 --> 00:19:44,250 où chaque colonne va être d'un type différent. 332 00:19:44,250 --> 00:19:47,880 333 00:19:47,880 --> 00:19:52,970 >> Enfin, ce sont donc essentiellement juste les quatre objets essentiels dans Liste R. 334 00:19:52,970 --> 00:19:55,820 sera simplement recueillir toute d'autres objets que vous souhaitez. 335 00:19:55,820 --> 00:20:00,130 Donc, il va stocker ceci dans une variable que vous pouvez facilement accéder. 336 00:20:00,130 --> 00:20:02,370 >> Donc ici, je prends une liste. 337 00:20:02,370 --> 00:20:04,460 Je dis des choses est égal à 3. 338 00:20:04,460 --> 00:20:08,060 Donc, je vais avoir un élément de la liste, ce qui est appelé des choses, 339 00:20:08,060 --> 00:20:10,570 et il va avoir la valeur 3. 340 00:20:10,570 --> 00:20:13,140 >> Je peux aussi créer une matrice. 341 00:20:13,140 --> 00:20:17,970 Donc, ce est 1-4 et la ligne de fin est égal à 2, donc une matrice 2 par 2. 342 00:20:17,970 --> 00:20:20,270 Également dans la liste et ce est ce qu'on appelle tapis. 343 00:20:20,270 --> 00:20:24,690 moreStuff, une chaîne de caractères, et même une autre liste en soi. 344 00:20:24,690 --> 00:20:27,710 >> Donc, ce est une liste qui est 5 et l'ours. 345 00:20:27,710 --> 00:20:30,990 Ainsi, il a la valeur 5 et il a l'ours de chaîne de caractères 346 00:20:30,990 --> 00:20:32,710 et ce est une liste dans une liste. 347 00:20:32,710 --> 00:20:35,965 Ainsi, vous pouvez avoir ces choses récursifs où 348 00:20:35,965 --> 00:20:38,230 vous avez un another-- entrez dans le type. 349 00:20:38,230 --> 00:20:41,420 Pareillement, vous pouvez avoir une matrice dans une autre matrice et ainsi de suite. 350 00:20:41,420 --> 00:20:44,264 Et la liste est juste un bon moyen de collecte et d'agrégation 351 00:20:44,264 --> 00:20:45,430 tous ces différents objets. 352 00:20:45,430 --> 00:20:50,210 353 00:20:50,210 --> 00:20:57,150 >> Et enfin, voici tout juste aider en cas ce était simplement parti sur de très rapidement. 354 00:20:57,150 --> 00:21:01,350 Donc, quand vous êtes confus d'une sorte de fonction, 355 00:21:01,350 --> 00:21:03,510 vous pouvez faire de l'aide de cette fonction. 356 00:21:03,510 --> 00:21:07,120 Ainsi, vous pouvez faire pour aider matrice ou une matrice de point d'interrogation. 357 00:21:07,120 --> 00:21:11,430 Et l'aide et le point d'interrogation sont juste un raccourci pour la même chose 358 00:21:11,430 --> 00:21:13,040 ils sont donc alias. 359 00:21:13,040 --> 00:21:16,820 >> lm est une fonction qui n'a tout simplement un modèle linéaire. 360 00:21:16,820 --> 00:21:20,340 Mais si vous avez juste aucune idée de la façon dont œuvres, vous pouvez juste faire aide de LM 361 00:21:20,340 --> 00:21:24,610 et que vais vous donner quelques sorte de documentation 362 00:21:24,610 --> 00:21:27,960 regarde un peu comme un page de manuel Unix, où 363 00:21:27,960 --> 00:21:34,210 vous avez une courte description de ce il le fait, aussi ce que ses arguments sont, 364 00:21:34,210 --> 00:21:38,850 ce qu'il retourne, et que des conseils sur la façon de l'utiliser, et quelques exemples ainsi. 365 00:21:38,850 --> 00:21:41,680 366 00:21:41,680 --> 00:21:52,890 >> Alors laissez-moi aller de l'avant et de montrer une certaine démonstration de l'utilisation de R. OK. 367 00:21:52,890 --> 00:21:55,470 Alors je suis allé sur de très rapidement uniquement les données 368 00:21:55,470 --> 00:21:59,440 structures et une sorte de la op-- certaines des opérations. 369 00:21:59,440 --> 00:22:02,960 Voici quelques fonctions. 370 00:22:02,960 --> 00:22:06,750 >> Donc ici, je vais juste définir une fonction. 371 00:22:06,750 --> 00:22:09,970 Donc, je suis également en utilisant opérateur d'affectation ici, 372 00:22:09,970 --> 00:22:12,610 et puis je dis déclarer comme une fonction. 373 00:22:12,610 --> 00:22:14,140 Et il prend la valeur x. 374 00:22:14,140 --> 00:22:18,210 Donc, ce est la valeur que vous voulez et je vais revenir x lui-même. 375 00:22:18,210 --> 00:22:20,840 Donc, ce est la fonction identité. 376 00:22:20,840 --> 00:22:23,670 >> Et ce qui est cool à propos de cette par rapport à d'autres langues 377 00:22:23,670 --> 00:22:26,330 et le niveau faible autre langues est que x 378 00:22:26,330 --> 00:22:29,350 peut être de tout type lui-même et il va revenir ce type. 379 00:22:29,350 --> 00:22:35,251 Ainsi, vous pouvez imagine-- alors laissez- moi juste lance ce rapidement. 380 00:22:35,251 --> 00:22:35,750 Désolé. 381 00:22:35,750 --> 00:22:40,300 >> Donc, une chose que je dois aussi mentionner ce est que cet éditeur que je utilise 382 00:22:40,300 --> 00:22:41,380 RStudio est appelé. 383 00:22:41,380 --> 00:22:44,389 Ce est ce qu'on appelle un IDE. 384 00:22:44,389 --> 00:22:46,180 Et une chose qui est vraiment sympa de cette 385 00:22:46,180 --> 00:22:51,500 est qu 'il incorpore beaucoup de la choses que vous voulez faire dans R par lui-même 386 00:22:51,500 --> 00:22:53,180 juste très intuitivement. 387 00:22:53,180 --> 00:22:55,550 >> Donc, voici une console interprète. 388 00:22:55,550 --> 00:23:02,160 Pareillement, vous pouvez aussi obtenir cette console première juste en faisant un R. de capital 389 00:23:02,160 --> 00:23:05,630 Et ce est exactement le même chose que la console. 390 00:23:05,630 --> 00:23:12,210 Donc, je peux juste faire id fonction x, x, x. 391 00:23:12,210 --> 00:23:16,130 Et puis que alors-- sera très bien lui-même. 392 00:23:16,130 --> 00:23:19,200 393 00:23:19,200 --> 00:23:21,740 >> Donc RStudio est grande car il a la console. 394 00:23:21,740 --> 00:23:25,360 Il a également les documents vous souhaitez exécuter. 395 00:23:25,360 --> 00:23:28,629 Et puis il a certaines variables que vous pouvez voir dans les environnements. 396 00:23:28,629 --> 00:23:30,420 Et puis, si vous avez faire parcelles, alors vous 397 00:23:30,420 --> 00:23:33,730 peut juste voir ici, par opposition à la gestion de toutes ces différentes fenêtres 398 00:23:33,730 --> 00:23:35,940 par eux-mêmes. 399 00:23:35,940 --> 00:23:40,530 >> En fait, je utilise personnellement Vim, mais je se sentir comme RStudio est excellent tout 400 00:23:40,530 --> 00:23:44,640 pour obtenir une bonne idée comment utiliser R. Habituellement, 401 00:23:44,640 --> 00:23:47,040 lorsque vous essayez de apprendre une nouvelle tâche, 402 00:23:47,040 --> 00:23:49,590 vous ne voulez pas à manipuler trop de choses à la fois. 403 00:23:49,590 --> 00:23:53,120 Alors R est juste un RStudio very-- est une très bonne façon d'apprendre R 404 00:23:53,120 --> 00:23:56,760 sans avoir à traiter avec toutes ces autres choses. 405 00:23:56,760 --> 00:23:58,600 >> Donc ici, je suis en cours d'exécution id bonjour. 406 00:23:58,600 --> 00:24:00,090 Cela renvoie bonjour. 407 00:24:00,090 --> 00:24:01,740 id 123. 408 00:24:01,740 --> 00:24:04,610 Voici un vecteur d'entiers. 409 00:24:04,610 --> 00:24:08,620 Pareillement, parce que vous pouvez prendre toute une sorte de valeur, 410 00:24:08,620 --> 00:24:16,060 vous pouvez faire revenir id de x elle retourne donc 1234 et 5. 411 00:24:16,060 --> 00:24:22,210 >> Et permettez-moi de vous montrer que ce est en effet un nombre entier. 412 00:24:22,210 --> 00:24:28,800 Et de même, si vous le faites classe id x, ça va être un entier. 413 00:24:28,800 --> 00:24:34,170 Et puis, vous pouvez aussi comparer les deux et ce est vrai. 414 00:24:34,170 --> 00:24:38,350 Je suis donc vérifier si id x x est égal à equals et préavis 415 00:24:38,350 --> 00:24:39,760 qu'il vous donne deux Trues. 416 00:24:39,760 --> 00:24:44,280 Donc, ce ne est pas dit sont les deux objets identiques, 417 00:24:44,280 --> 00:24:46,845 mais sont chacune des entrées dans les vecteurs identiques. 418 00:24:46,845 --> 00:24:50,000 419 00:24:50,000 --> 00:24:52,090 >> Voici bounded.compare. 420 00:24:52,090 --> 00:24:58,470 Donc, ce est un peu plus compliqué en ce qu'il présente un état autre et si 421 00:24:58,470 --> 00:25:00,960 puis il faut être deux arguments à la fois. 422 00:25:00,960 --> 00:25:02,640 Donc, x est de tout type. 423 00:25:02,640 --> 00:25:06,280 Et je dis cela Le deuxième argument est un. 424 00:25:06,280 --> 00:25:08,380 Cela peut être quelque chose d'aussi bien. 425 00:25:08,380 --> 00:25:12,490 Mais par défaut, il va prendre 5 Si vous ne indiquez rien. 426 00:25:12,490 --> 00:25:16,730 >> Donc ici, je vais dire si x est supérieur à un. 427 00:25:16,730 --> 00:25:19,220 Donc, si je ne précise pas, il dit que si x est supérieur à 5, 428 00:25:19,220 --> 00:25:20,470 alors je vais retourner TRUE. 429 00:25:20,470 --> 00:25:23,230 d'autre, je vais retourner FALSE. 430 00:25:23,230 --> 00:25:24,870 Alors laissez-moi aller de l'avant et de définir cela. 431 00:25:24,870 --> 00:25:30,600 432 00:25:30,600 --> 00:25:34,550 >> Et maintenant, je vais exécuter bounded.compare 3. 433 00:25:34,550 --> 00:25:39,150 Donc, il est dit moins 3 than-- 3 est supérieur à 5. 434 00:25:39,150 --> 00:25:41,830 Non, ce ne est pas si faux. 435 00:25:41,830 --> 00:25:46,550 >> Et bounded.compare 3 et je vais de comparer l'aide d'un est égal à 2. 436 00:25:46,550 --> 00:25:50,700 Alors maintenant, je dis oui, maintenant je veulent un être autre chose. 437 00:25:50,700 --> 00:25:52,750 Donc, je vais dire un, vous devriez être deux. 438 00:25:52,750 --> 00:25:56,640 >> Je peux soit faire ce genre de notation ou je dis est égal à 2. 439 00:25:56,640 --> 00:25:58,720 Ce est un plus lisible en ce que lorsque vous êtes 440 00:25:58,720 --> 00:26:01,450 regardant ces vraiment des fonctions compliquées que 441 00:26:01,450 --> 00:26:08,110 prendre arguments-- multiple et cette peut être des dizaines oftentimes-- juste dire 442 00:26:08,110 --> 00:26:11,140 A est égal à 2 est plus lisible pour vous afin que plus tard dans l'avenir 443 00:26:11,140 --> 00:26:13,020 vous saurez ce que vous faites. 444 00:26:13,020 --> 00:26:17,120 >> Donc dans ce cas, je suis 3 dicton est supérieur à 2. 445 00:26:17,120 --> 00:26:18,270 Oui, ça l'est. 446 00:26:18,270 --> 00:26:22,350 Et de même, je ne peux retirer et dire, est plus grand que 3 2 447 00:26:22,350 --> 00:26:23,440 où a est égal à 2. 448 00:26:23,440 --> 00:26:26,230 Et ce est également vrai. 449 00:26:26,230 --> 00:26:26,730 Oui? 450 00:26:26,730 --> 00:26:29,670 >> AUDIENCE: Etes-vous exécution ligne par ligne? 451 00:26:29,670 --> 00:26:30,670 >> DUSTIN TRAN: Oui je suis. 452 00:26:30,670 --> 00:26:33,900 Donc ce que je fais ici est prenant ce texte document-- 453 00:26:33,900 --> 00:26:39,825 et ce qui est formidable à propos RStudio est que Je peux juste lancer un short-- un raccourci clavier. 454 00:26:39,825 --> 00:26:41,820 Donc je fais Contrôle-Entrée. 455 00:26:41,820 --> 00:26:44,850 >> Et puis, je prends le ligne dans le document de texte 456 00:26:44,850 --> 00:26:46,710 puis mettre dans la console. 457 00:26:46,710 --> 00:26:50,800 Donc ici, je veux dire, bounded.compare et je fais Control-X. 458 00:26:50,800 --> 00:26:52,540 Donc, je ne peux fonctionner ici aussi. 459 00:26:52,540 --> 00:26:54,920 Et puis ça va prendre du ligne, puis mis ici. 460 00:26:54,920 --> 00:26:57,900 Et puis même, je peux faire fonctionner ici. 461 00:26:57,900 --> 00:27:04,630 Et puis, il va tout simplement continuer définissant les lignes dans la console comme ça. 462 00:27:04,630 --> 00:27:10,690 >> Et si vous remarquez aussi le bouclés accolades sont là, tout comme dans la syntaxe de C. 463 00:27:10,690 --> 00:27:13,910 x-- si la condition if est aussi va utiliser des parenthèses, puis 464 00:27:13,910 --> 00:27:15,350 vous pouvez utiliser d'autre. 465 00:27:15,350 --> 00:27:17,496 Un autre est d'autre si. 466 00:27:17,496 --> 00:27:21,440 Donc, ce sera x est égal à un est égal, par exemple. 467 00:27:21,440 --> 00:27:24,190 468 00:27:24,190 --> 00:27:26,350 Et puis je vais retourner quelque chose ici. 469 00:27:26,350 --> 00:27:29,490 >> Notez qu'il ya deux différents choses ici qui se passe. 470 00:27:29,490 --> 00:27:34,360 La première est que ici je spécifiant renvoyer la valeur TRUE. 471 00:27:34,360 --> 00:27:35,950 Ici, je dis juste x. 472 00:27:35,950 --> 00:27:39,970 Alors R sera généralement par défaut prendre la dernière arguments-- 473 00:27:39,970 --> 00:27:43,510 ou de prendre la dernière ligne du code, et ce sera ce qu'il est retourné. 474 00:27:43,510 --> 00:27:46,920 Donc ici ce est la même chose que faire return x. 475 00:27:46,920 --> 00:27:49,450 476 00:27:49,450 --> 00:27:50,540 >> Et juste pour vous montrer. 477 00:27:50,540 --> 00:27:54,000 478 00:27:54,000 --> 00:27:57,052 Et puis, il ne fonctionnera juste comme ça. 479 00:27:57,052 --> 00:27:58,260 Alors permettez-moi de continuer avec cela. 480 00:27:58,260 --> 00:28:00,630 >> Donc, d'autre si. 481 00:28:00,630 --> 00:28:04,060 Et vraiment, je peux retourner tout ce que je aimerais. 482 00:28:04,060 --> 00:28:06,680 Donc, je ne ai même pas à retour booléens tout le temps, 483 00:28:06,680 --> 00:28:08,410 Je peux juste retourner autre chose. 484 00:28:08,410 --> 00:28:10,670 Donc, je peux faire ours de retour. 485 00:28:10,670 --> 00:28:12,989 >> Donc, si x est égal à un pied d'égalité, il va revenir ours. 486 00:28:12,989 --> 00:28:14,530 Sinon, il va retourner TRUE. 487 00:28:14,530 --> 00:28:19,310 Je peux aussi faire un vecteur ou vraiment quelque chose. 488 00:28:19,310 --> 00:28:22,210 >> Et normalement statiquement langages typés 489 00:28:22,210 --> 00:28:23,840 vous auriez à spécifier un type ici. 490 00:28:23,840 --> 00:28:25,750 Et remarquez qu'il ne peut tout simplement être ne importe quoi. 491 00:28:25,750 --> 00:28:32,400 Et R est assez intelligent qu'il va juste faire ceci et cela fonctionnera très bien. 492 00:28:32,400 --> 00:28:33,620 >> Alors permettez-moi de définir cela. 493 00:28:33,620 --> 00:28:39,460 494 00:28:39,460 --> 00:28:41,230 Unexpected-- oh désolé. 495 00:28:41,230 --> 00:28:44,336 Il devrait être une accolade ici. 496 00:28:44,336 --> 00:28:44,836 D'ACCORD. 497 00:28:44,836 --> 00:28:45,336 Cool. 498 00:28:45,336 --> 00:28:52,580 499 00:28:52,580 --> 00:28:54,530 Bien. 500 00:28:54,530 --> 00:28:58,250 Alors maintenant, nous allons comparer 3 et a est égal à 3. 501 00:28:58,250 --> 00:29:01,860 Donc, il devrait return-- Yeah l'ours de valeur. 502 00:29:01,860 --> 00:29:06,740 >> Alors maintenant, une chose plus générale, ce est comme qu'en est-il d'autres structures de données. 503 00:29:06,740 --> 00:29:09,110 Donc, vous avez cette fonction. 504 00:29:09,110 --> 00:29:15,360 Cela va travailler sur toute sorte de la valeur comme 3 ou tout numérique, 505 00:29:15,360 --> 00:29:17,500 en d'autres termes, double. 506 00:29:17,500 --> 00:29:19,330 >> Mais qu'en est-il quelque chose comme un vecteur. 507 00:29:19,330 --> 00:29:27,750 Donc ce qui arrive si vous do-- donc je suis va affecter val à, disons, 4-6. 508 00:29:27,750 --> 00:29:31,640 Donc, si je reviens cela, ce est un vecteur de 4, 5, 6. 509 00:29:31,640 --> 00:29:34,935 >> Voyons maintenant ce qui se passe si je fais bounded.compare val. 510 00:29:34,935 --> 00:29:37,680 511 00:29:37,680 --> 00:29:42,450 Donc, cela va vous donner 15 1251. 512 00:29:42,450 --> 00:29:46,440 Donc, en d'autres termes, ce est dire si vous regardez cette condition 513 00:29:46,440 --> 00:29:50,040 il dit x est inférieur qu'un ou quelque chose. 514 00:29:50,040 --> 00:29:51,880 Donc, ce est un peu confus parce que maintenant 515 00:29:51,880 --> 00:29:53,379 vous ne savez pas ce qui se passe. 516 00:29:53,379 --> 00:29:58,690 Donc je suppose que une chose qui est vraiment bien sur juste essayer de débogage 517 00:29:58,690 --> 00:30:04,600 ce est que vous pouvez juste faire val est supérieure d'un et de voir ce qui se passe là-bas. 518 00:30:04,600 --> 00:30:09,720 >> Donc val-- a est par défaut de sorte 5 disons simplement Do Val supérieure à 5. 519 00:30:09,720 --> 00:30:14,280 Donc, ce est un FAUX FAUX vecteur TRUE. 520 00:30:14,280 --> 00:30:17,206 Alors maintenant, quand vous cherchez à cela, il va dire si, 521 00:30:17,206 --> 00:30:20,080 puis il va vous donner cette est un vecteur de FAUX VRAI FAUX. 522 00:30:20,080 --> 00:30:23,450 >> Ainsi, lorsque vous passez cela en R, R n'a aucune idée de ce que vous faites. 523 00:30:23,450 --> 00:30:26,650 Parce qu'il se attend à un seul valeur qui est une valeur booléenne, et maintenant 524 00:30:26,650 --> 00:30:29,420 vous donnant un vecteur de booléens. 525 00:30:29,420 --> 00:30:31,970 Donc, par défaut, R est juste va dire ce que le diable, 526 00:30:31,970 --> 00:30:35,440 Je vais supposer que vous êtes va prendre le premier élément ici. 527 00:30:35,440 --> 00:30:38,320 Donc, je vais say-- je vais de supposer que ce est faux. 528 00:30:38,320 --> 00:30:40,890 Donc, il va dire non, ce ne est pas juste. 529 00:30:40,890 --> 00:30:45,246 >> De même, il va soit égal à un est égal val. 530 00:30:45,246 --> 00:30:47,244 Non, désolé 5. 531 00:30:47,244 --> 00:30:48,910 Et il va aussi être faux aussi. 532 00:30:48,910 --> 00:30:52,410 Donc, il va dire non, Ce est pas vrai, si bien que ce est 533 00:30:52,410 --> 00:30:53,680 va retourner ce dernier. 534 00:30:53,680 --> 00:30:56,420 535 00:30:56,420 --> 00:31:01,360 >> Donc, ce est soit une bonne chose ou une mauvaise chose, selon la façon dont vous l'affichez. 536 00:31:01,360 --> 00:31:05,104 Parce que quand vous êtes la création de ces fonctions, 537 00:31:05,104 --> 00:31:06,770 vous ne savez pas réellement ce qui se passe. 538 00:31:06,770 --> 00:31:10,210 Alors parfois vous voudriez une erreur, ou peut-être vous voulez juste un avertissement. 539 00:31:10,210 --> 00:31:12,160 Dans ce cas, R ne fait pas cela. 540 00:31:12,160 --> 00:31:14,300 Donc, ce est vraiment à vous basé hors de ce 541 00:31:14,300 --> 00:31:17,310 vous pensez que la langue devrait faire dans ce cas 542 00:31:17,310 --> 00:31:22,920 si vous passez dans un vecteur de booléens quand vous faites une condition if. 543 00:31:22,920 --> 00:31:31,733 >> Alors disons que vous aviez l'original une avec si quelque retourner TRUE et vous êtes 544 00:31:31,733 --> 00:31:34,190 va retourner FALSE. 545 00:31:34,190 --> 00:31:39,300 Donc, une façon d'abstraire ce est-à-dire que je 546 00:31:39,300 --> 00:31:41,530 ne ont même pas besoin de cette chose conditionnelle. 547 00:31:41,530 --> 00:31:47,220 Une autre chose que je peux faire, ce est juste retourner les valeurs elles-mêmes. 548 00:31:47,220 --> 00:31:53,240 Donc, si vous remarquez, si vous do val est supérieur à 5, 549 00:31:53,240 --> 00:31:56,350 cela va renvoyer une vecteur FAUX VRAI FAUX. 550 00:31:56,350 --> 00:31:58,850 >> Peut-être que ce est ce que vous souhaiter pour bounded.compare. 551 00:31:58,850 --> 00:32:02,940 Vous souhaitez retourner un vecteur de booléens où il compare chacune des valeurs 552 00:32:02,940 --> 00:32:04,190 à eux-mêmes. 553 00:32:04,190 --> 00:32:11,165 Ainsi, vous pouvez simplement ne bounded.compare fonction x, a est égal à 5. 554 00:32:11,165 --> 00:32:13,322 555 00:32:13,322 --> 00:32:15,363 Et puis au lieu de faire cette si la condition d'autre, 556 00:32:15,363 --> 00:32:21,430 Je vais revenir x est supérieur à 5. 557 00:32:21,430 --> 00:32:23,620 Donc, si ce est vrai, alors il va retourner TRUE. 558 00:32:23,620 --> 00:32:26,830 Et puis, si ce ne est pas, ce est va retourner FALSE. 559 00:32:26,830 --> 00:32:30,880 >> Et cela fonctionnera pour l'une de ces structures. 560 00:32:30,880 --> 00:32:41,450 Donc, je peux bounded.compare c 1 6 ou 9 et puis je vais vous dire une égale 6, 561 00:32:41,450 --> 00:32:42,799 par exemple. 562 00:32:42,799 --> 00:32:44,840 Et puis ça va vous donner le droit booléenne 563 00:32:44,840 --> 00:32:48,240 vecteur qui vous concevez. 564 00:32:48,240 --> 00:32:50,660 >> Donc, ce sont juste des fonctions et maintenant laissez-moi juste 565 00:32:50,660 --> 00:32:54,980 vous montrer quelques visuels interactifs. 566 00:32:54,980 --> 00:32:59,700 Je ne pense pas que je ai fait Wi-Fi ici alors laissez-moi juste aller de l'avant 567 00:32:59,700 --> 00:33:01,970 et sauter celui-ci je suppose. 568 00:33:01,970 --> 00:33:05,260 >> Mais une chose qui est cool cependant, ce est que si vous venez 569 00:33:05,260 --> 00:33:09,600 vouloir tester un tas de différentes commandes de données, 570 00:33:09,600 --> 00:33:13,320 il ya un tas de différents ensembles de données qui sont déjà préchargés dans R. 571 00:33:13,320 --> 00:33:15,770 Donc, l'un d'eux est appelé l'iris ensemble de données. 572 00:33:15,770 --> 00:33:18,910 Ce est l'un des plus connus ceux de l'apprentissage machine. 573 00:33:18,910 --> 00:33:23,350 Vous aurez généralement faites juste une sorte de cas de test pour voir si votre code se exécute. 574 00:33:23,350 --> 00:33:27,520 Alors disons simplement vérifier ce que l'iris est. 575 00:33:27,520 --> 00:33:33,130 >> Donc, cette chose va comme une trame de données. 576 00:33:33,130 --> 00:33:36,000 Et ce est un peu longtemps, car Je viens imprimé sur l'iris. 577 00:33:36,000 --> 00:33:38,810 Ce est l'impression de la chose entière. 578 00:33:38,810 --> 00:33:42,830 Ainsi, il a tous ces différents noms. 579 00:33:42,830 --> 00:33:45,505 Donc iris est une collection de fleurs différentes. 580 00:33:45,505 --> 00:33:48,830 Dans ce cas, ce est dire présente les espèces de celui-ci, 581 00:33:48,830 --> 00:33:54,760 toutes ces différentes largeurs et longueurs des sépales et les pétales. 582 00:33:54,760 --> 00:33:58,880 >> Et normalement, si vous souhaitez imprimer iris, 583 00:33:58,880 --> 00:34:03,680 par exemple, vous ne voulez pas avoir faire tout cela parce que cela peut prendre le relais 584 00:34:03,680 --> 00:34:05,190 l'ensemble de votre console. 585 00:34:05,190 --> 00:34:09,280 Donc, une chose qui est vraiment Nice est la fonction de tête. 586 00:34:09,280 --> 00:34:12,929 Donc, si vous faites juste la tête iris, cela vous donnera 587 00:34:12,929 --> 00:34:17,389 les cinq premières rangées, ou six, je suppose. 588 00:34:17,389 --> 00:34:19,909 Et puis bien vous, peut il suffit de spécifier ici. 589 00:34:19,909 --> 00:34:22,914 Donc 20-- cela donnera vous les 20 premières lignes. 590 00:34:22,914 --> 00:34:24,830 Et je étais en fait assez de surprise que cette 591 00:34:24,830 --> 00:34:28,770 Gave me six alors laissez-moi aller de l'avant et vérifier iris-- ou de la tête, désolé. 592 00:34:28,770 --> 00:34:31,699 593 00:34:31,699 --> 00:34:34,960 Et ici, il donnera vous la documentation 594 00:34:34,960 --> 00:34:37,960 de ce que la tête de la valeur fait. 595 00:34:37,960 --> 00:34:40,839 Donc, il renvoie le premier ou la dernière d'un objet. 596 00:34:40,839 --> 00:34:42,630 Et puis je vais regarder les valeurs par défaut. 597 00:34:42,630 --> 00:34:47,340 Et puis il dit que le défaut méthode tête x et n est égal à 6L. 598 00:34:47,340 --> 00:34:50,620 Donc, cela renvoie les six premiers éléments. 599 00:34:50,620 --> 00:34:55,050 Et même, si vous remarquez ici, je ne pas avoir à spécifier n est égal à 6. 600 00:34:55,050 --> 00:34:56,840 Par défaut il utilise six, je suppose. 601 00:34:56,840 --> 00:35:00,130 Et puis, si je veux spécifier un certain valeur, alors je peux voir ça aussi. 602 00:35:00,130 --> 00:35:02,970 603 00:35:02,970 --> 00:35:10,592 >> Donc, ce est des commandes simples et en voici une autre qui est just-- bien, 604 00:35:10,592 --> 00:35:12,550 Je can-- ce est en fait un peu plus complexe, 605 00:35:12,550 --> 00:35:17,130 mais cela prendra juste la classe de chaque colonne de l'ensemble de données de l'iris. 606 00:35:17,130 --> 00:35:20,910 Donc, ce sera vous montrer ce que chacun de ces colonnes en fonction de leurs types. 607 00:35:20,910 --> 00:35:23,665 Donc, la longueur des sépales est numérique, Largeur des sépales est numérique. 608 00:35:23,665 --> 00:35:26,540 Toutes ces valeurs sont tout numérique parce que vous pouvez dire à partir de ces données 609 00:35:26,540 --> 00:35:29,440 structurent ce sont tout va numérique. 610 00:35:29,440 --> 00:35:34,310 >> Et la colonne Espèce va être un facteur. 611 00:35:34,310 --> 00:35:37,270 Donc, normalement, on pourrait penser que ce est comme une chaîne de caractères. 612 00:35:37,270 --> 00:35:48,830 Mais si vous faites juste irisSpecies, et puis je vais faire la tête 5, 613 00:35:48,830 --> 00:35:51,820 et cela va imprimer les cinq premières valeurs. 614 00:35:51,820 --> 00:35:54,150 >> Et puis notez ce niveau. 615 00:35:54,150 --> 00:35:58,870 Donc, ce est saying-- ce est la manière de R d'avoir variables catégorielles. 616 00:35:58,870 --> 00:36:03,765 Donc, au lieu de simplement ayant des chaînes de caractères, 617 00:36:03,765 --> 00:36:06,740 il a des niveaux spécifiant laquelle de ces choses sont. 618 00:36:06,740 --> 00:36:12,450 >> Alors disons que irisSpecies 1. 619 00:36:12,450 --> 00:36:17,690 Donc, ce que vous voulez faire ici est que je suis sous-ensembles à cette colonne de l'espèce. 620 00:36:17,690 --> 00:36:21,480 Donc, cela prend la colonne espèces puis 621 00:36:21,480 --> 00:36:23,820 il indexe pour obtenir le premier élément. 622 00:36:23,820 --> 00:36:27,140 Donc, cela devrait vous donner setosa. 623 00:36:27,140 --> 00:36:28,710 Et il vous donne également des niveaux ici. 624 00:36:28,710 --> 00:36:32,812 >> Ainsi, vous pouvez également comparer ceci à la setosa de caractères 625 00:36:32,812 --> 00:36:34,645 et cela ne va pas pour être vrai parce que une 626 00:36:34,645 --> 00:36:37,940 est d'un type différent de l'autre. 627 00:36:37,940 --> 00:36:40,590 Ou je suppose que ce est vrai parce que R est plus intelligent que cela. 628 00:36:40,590 --> 00:36:45,420 Et il semble à ce puis dit, ce est peut être ce que vous voulez. 629 00:36:45,420 --> 00:36:51,860 Donc, il va dire le caractère setosa chaîne est le même que celui-ci. 630 00:36:51,860 --> 00:37:01,290 Et puis même, vous pouvez aussi il suffit de prendre ces comme ainsi de suite. 631 00:37:01,290 --> 00:37:05,580 >> Donc, ce est juste une sorte de commandes rapides de l'ensemble de données. 632 00:37:05,580 --> 00:37:08,030 Alors, voici une exploration de données. 633 00:37:08,030 --> 00:37:11,360 Donc, ce est un peu plus participer à l'analyse de données. 634 00:37:11,360 --> 00:37:18,340 Et cela est pris de certains bootcamp en R dans Berkeley. 635 00:37:18,340 --> 00:37:20,790 >> Donc bibliothèque étrangère. 636 00:37:20,790 --> 00:37:24,880 Donc, je vais charger dans un bibliothèque qui se appelle étrangère. 637 00:37:24,880 --> 00:37:32,460 Donc cela va me donner read.dta Supposons donc que je ai cet ensemble de données. 638 00:37:32,460 --> 00:37:39,000 Ce est stocké dans le courant répertoire de ma console de travail. 639 00:37:39,000 --> 00:37:42,190 Voyons donc ce que le répertoire de travail est. 640 00:37:42,190 --> 00:37:44,620 >> Alors, voici mon répertoire de travail. 641 00:37:44,620 --> 00:37:50,040 Et lire les données de points, ce chose, ce est dire ce fichier 642 00:37:50,040 --> 00:37:54,650 est situé dans le dossier de données ce répertoire de travail courant. 643 00:37:54,650 --> 00:38:00,520 Et ce ne est pas read.dta une commande par défaut. 644 00:38:00,520 --> 00:38:02,760 Je suppose que je ai chargé dans déjà. 645 00:38:02,760 --> 00:38:04,750 IEI supposé je ai chargé dans cette déjà. 646 00:38:04,750 --> 00:38:08,115 >> Mais si read.dta ne va pas comme une commande par défaut. 647 00:38:08,115 --> 00:38:11,550 Et ce est pourquoi vous allez avoir à charger dans cette bibliothèque package-- 648 00:38:11,550 --> 00:38:14,500 ce paquet appelé étrangère. 649 00:38:14,500 --> 00:38:16,690 Et si vous ne avez pas le paquet, je pense 650 00:38:16,690 --> 00:38:19,180 étrangère est l'un des plus intégrées. 651 00:38:19,180 --> 00:38:31,150 Sinon, vous pouvez également faire install.packages 652 00:38:31,150 --> 00:38:33,180 et cela va installer le package. 653 00:38:33,180 --> 00:38:36,878 Et cela vous donnera R. Euh, non. 654 00:38:36,878 --> 00:38:39,830 655 00:38:39,830 --> 00:38:43,140 Et puis je vais juste arrêter parce que je ai déjà. 656 00:38:43,140 --> 00:38:46,920 >> Mais ce qui est vraiment agréable à propos de R ce est que la gestion des paquets 657 00:38:46,920 --> 00:38:48,510 système est très élégant. 658 00:38:48,510 --> 00:38:52,470 Parce qu'il va stocker tout vraiment bien pour vous. 659 00:38:52,470 --> 00:38:59,780 Donc dans ce cas, il va stocker dans, je crois, cette bibliothèque ici. 660 00:38:59,780 --> 00:39:02,390 >> Donc, quand vous le voulez installer de nouveaux paquets, 661 00:39:02,390 --> 00:39:04,980 ce est aussi simple que faire install.packages 662 00:39:04,980 --> 00:39:07,500 et R gérera tous les paquets pour vous. 663 00:39:07,500 --> 00:39:12,900 Donc, vous ne avez pas à faire quelque chose dans Python, où vous avez emballage externe 664 00:39:12,900 --> 00:39:15,330 gestionnaires comme le papier Anaconda où vous êtes 665 00:39:15,330 --> 00:39:18,310 doing-- vous installez le paquetages en dehors de Python 666 00:39:18,310 --> 00:39:20,940 et puis vous essayez de les exécuter vous-même. 667 00:39:20,940 --> 00:39:22,210 Donc, ce est vraiment super. 668 00:39:22,210 --> 00:39:25,590 >> Et install.packages nécessite Internet. 669 00:39:25,590 --> 00:39:31,950 Il faut partir d'un serveur et le référentiel 670 00:39:31,950 --> 00:39:33,960 rassemble tous les des paquets est nommé CRAN. 671 00:39:33,960 --> 00:39:40,690 Et vous pouvez spécifier quelle sorte de miroir vous voulez télécharger les paquets. 672 00:39:40,690 --> 00:39:43,420 >> Donc ici, je prends cet ensemble de données. 673 00:39:43,420 --> 00:39:46,240 Je lis dans l'aide de cette fonction. 674 00:39:46,240 --> 00:39:49,360 Alors laissez-moi aller de l'avant et de le faire. 675 00:39:49,360 --> 00:39:52,900 >> Donc, supposons que vous avez cet ensemble de données 676 00:39:52,900 --> 00:39:55,550 et vous ne avez absolument aucune idée de ce que ce est. 677 00:39:55,550 --> 00:39:58,560 Et cela vient effectivement en place assez souvent dans l'industrie 678 00:39:58,560 --> 00:40:00,910 où vous avez juste ces tonnes et des tonnes de choses salissantes 679 00:40:00,910 --> 00:40:02,890 et ils sont incroyablement sans étiquette. 680 00:40:02,890 --> 00:40:06,380 Donc ici, je ai cette ensemble de données et je ne sais pas 681 00:40:06,380 --> 00:40:08,400 ce que ce est si je suis juste montrant le vérifier. 682 00:40:08,400 --> 00:40:10,620 >> Donc, je vais faire la tête la première. 683 00:40:10,620 --> 00:40:14,190 Donc, je vérifie les six premiers colonnes de ce que cet ensemble de données est. 684 00:40:14,190 --> 00:40:21,730 Donc, ce est l'état, pres04, puis Tous ces différents type de colonnes. 685 00:40:21,730 --> 00:40:25,612 Et ce qui est intéressant ici, je suppose, ce est que vous 686 00:40:25,612 --> 00:40:27,945 supposerait que cela ressemble comme une sorte d'élection. 687 00:40:27,945 --> 00:40:30,482 688 00:40:30,482 --> 00:40:32,190 Et je suppose seulement de regarder le fichier 689 00:40:32,190 --> 00:40:41,070 nommer ce est une sorte de collection des données sur les candidats ou les électeurs 690 00:40:41,070 --> 00:40:44,920 qui ont voté pour les présidents spécifiques ou des candidats de président 691 00:40:44,920 --> 00:40:46,550 pour l'élection de 2004. 692 00:40:46,550 --> 00:40:52,920 >> Voici donc les valeurs 1, 2 Donc, une façon de stocker 693 00:40:52,920 --> 00:40:56,540 les candidats de président Voici leurs noms. 694 00:40:56,540 --> 00:40:59,780 Dans ce cas, il semble que ils sont juste des valeurs entières. 695 00:40:59,780 --> 00:41:04,030 Donc 2004, ce était Bush contre Kerry je crois. 696 00:41:04,030 --> 00:41:09,010 Et maintenant, disons que vous ne savez tout simplement pas si 1 correspond à Bush ou 2 697 00:41:09,010 --> 00:41:11,703 correspond à Kerry ou et ainsi de suite et ainsi de suite, non? 698 00:41:11,703 --> 00:41:15,860 >> Et ce est, juste pour moi, un problème assez courant. 699 00:41:15,860 --> 00:41:18,230 Alors, que pouvez-vous faire dans ce cas? 700 00:41:18,230 --> 00:41:20,000 Donc, nous allons vérifier toutes ces autres choses. 701 00:41:20,000 --> 00:41:22,790 >> Etat, je suppose ce vient de différents états. 702 00:41:22,790 --> 00:41:25,100 PartyId, revenu. 703 00:41:25,100 --> 00:41:27,710 Regardons PartyId. 704 00:41:27,710 --> 00:41:32,800 Alors peut-être une chose que vous pouvez faire est examiner chacune des observations 705 00:41:32,800 --> 00:41:36,250 qui ont un PartyId du républicain ou démocrate ou quelque chose. 706 00:41:36,250 --> 00:41:38,170 Alors disons simplement regarder ce PartyId est. 707 00:41:38,170 --> 00:41:41,946 >> Donc, je vais prendre dat et puis je vais 708 00:41:41,946 --> 00:41:47,960 pour ce faire signe dollar opérateur que je ai fait précédemment 709 00:41:47,960 --> 00:41:50,770 et cela va sous-ensemble de cette colonne. 710 00:41:50,770 --> 00:41:57,760 Et puis je vais dans la tête de cette 20, juste pour voir à quoi cela ressemble. 711 00:41:57,760 --> 00:42:00,170 >> Donc, ce est juste un tas de NAS. 712 00:42:00,170 --> 00:42:02,800 Donc, en d'autres termes, vous avez données manquantes sur ces gars. 713 00:42:02,800 --> 00:42:08,100 Mais vous remarquerez également cette dat PartyId est un facteur 714 00:42:08,100 --> 00:42:10,030 si cela vous donne différentes catégories. 715 00:42:10,030 --> 00:42:14,170 Donc, en d'autres termes, peut prendre PartyId Démocrate, républicain, indépendant, 716 00:42:14,170 --> 00:42:16,640 ou autre chose. 717 00:42:16,640 --> 00:42:23,940 >> Allons donc de l'avant et nous allons voir laquelle de ces est-- oh, OK. 718 00:42:23,940 --> 00:42:28,480 Donc, je vais au sous-ensemble à PartyId puis 719 00:42:28,480 --> 00:42:32,780 regardent ceux qui sont Démocrate, par exemple. 720 00:42:32,780 --> 00:42:37,150 Cela va vous donner une valeur booléenne, un énorme booléenne Trues et faux. 721 00:42:37,150 --> 00:42:41,630 >> Et maintenant, disons que je veux au sous-ensemble de ces gars-là. 722 00:42:41,630 --> 00:42:47,260 Donc cela va prendre mon DAT et Quel que soit le sous-ensemble d'observations 723 00:42:47,260 --> 00:42:48,910 avoir égaux PartyId égaux démocrate. 724 00:42:48,910 --> 00:42:52,830 725 00:42:52,830 --> 00:42:55,180 Et ce est assez long parce il ya beaucoup d'entre eux. 726 00:42:55,180 --> 00:42:59,060 Alors maintenant, je vais à la tête de cette dans 20. 727 00:42:59,060 --> 00:43:05,690 728 00:43:05,690 --> 00:43:11,270 >> Et comme vous le remarquez, égaux égaux qui est intéressant dans ce que vous êtes 729 00:43:11,270 --> 00:43:13,250 already-- vous êtes également y compris le NAS. 730 00:43:13,250 --> 00:43:19,010 Donc dans ce cas, vous ne pouvez toujours pas obtenir toute information parce que maintenant vous avez AN 731 00:43:19,010 --> 00:43:22,650 et vous voulez juste pour voir qui de la observation correspondent à démocrate 732 00:43:22,650 --> 00:43:24,670 et non ceux-ci manquant valeurs mêmes. 733 00:43:24,670 --> 00:43:27,680 Alors, comment voulez-vous vous débarrasser de ces AN? 734 00:43:27,680 --> 00:43:36,410 >> Je suis juste en utilisant alors voici la clé sur mon curseur, puis dire se déplacer. 735 00:43:36,410 --> 00:43:39,778 Et puis ici, je vais juste dire is.na datpartyid. 736 00:43:39,778 --> 00:43:48,970 737 00:43:48,970 --> 00:43:52,720 Donc cela et et prendra deux vecteurs différents booléennes 738 00:43:52,720 --> 00:43:57,160 et dire qu'il va être VRAI et FAUX par exemple. 739 00:43:57,160 --> 00:43:59,190 Donc ça va faire cette composante-sage. 740 00:43:59,190 --> 00:44:02,910 Donc ici, je dis prise la trame de données, sous-ensemble 741 00:44:02,910 --> 00:44:10,170 à ceux qui correspondent aux démocrate, et retirer l'un d'eux qui ne sont pas NA. 742 00:44:10,170 --> 00:44:13,540 >> Donc, ce devrait will-- vous donner quelque chose. 743 00:44:13,540 --> 00:44:16,540 744 00:44:16,540 --> 00:44:17,600 Voyons is.na. 745 00:44:17,600 --> 00:44:24,670 746 00:44:24,670 --> 00:44:27,690 Essayons datpartyid is.na. 747 00:44:27,690 --> 00:44:36,290 748 00:44:36,290 --> 00:44:45,290 Et cela devrait donner vous-- sorry-- simplement un vecteur booléenne. 749 00:44:45,290 --> 00:44:49,260 Et puis, parce que ce est si longtemps, Je vais au sous-ensemble à 20. 750 00:44:49,260 --> 00:44:49,760 D'ACCORD. 751 00:44:49,760 --> 00:44:51,570 Donc, cela devrait fonctionner. 752 00:44:51,570 --> 00:44:54,700 >> Et celui-ci sera également Trues. 753 00:44:54,700 --> 00:45:01,830 Ah, mon erreur, ce est que je I'm-- utilisent C ++ et R interchangeable donc je faire 754 00:45:01,830 --> 00:45:03,590 cette erreur tout le temps. 755 00:45:03,590 --> 00:45:05,807 L'opérateur and est effectivement celui que vous voulez. 756 00:45:05,807 --> 00:45:08,140 Vous ne voulez pas utiliser deux esperluette, juste un seul. 757 00:45:08,140 --> 00:45:14,970 758 00:45:14,970 --> 00:45:17,010 D'ACCORD. 759 00:45:17,010 --> 00:45:18,140 >> Voyons donc. 760 00:45:18,140 --> 00:45:20,930 761 00:45:20,930 --> 00:45:23,920 Nous avons donc des sous-ensembles à l' PartyId où ils sont démocrate 762 00:45:23,920 --> 00:45:25,300 et ils ne sont pas les valeurs manquantes. 763 00:45:25,300 --> 00:45:27,690 Et maintenant regardons lesquels ils ont voté. 764 00:45:27,690 --> 00:45:31,530 Donc, il semble que la plupart d'entre eux ont voté pour une. 765 00:45:31,530 --> 00:45:36,090 Donc, je vais aller de l'avant et dire que ce est Kerry. 766 00:45:36,090 --> 00:45:39,507 >> Et même, vous pouvez aller aussi républicain 767 00:45:39,507 --> 00:45:41,090 et je espère, cela devrait vous donner deux. 768 00:45:41,090 --> 00:45:49,730 769 00:45:49,730 --> 00:45:51,770 Ce est juste un tas de différentes colonnes. 770 00:45:51,770 --> 00:45:53,070 Et en effet, ce est deux. 771 00:45:53,070 --> 00:45:55,750 Donc PartyId tout républicain, plupart d'entre eux votent pour deux. 772 00:45:55,750 --> 00:45:58,390 >> Il semble donc que, tout simplement en regardant cela, 773 00:45:58,390 --> 00:46:00,600 Républicain va être un very-- ou PartyId 774 00:46:00,600 --> 00:46:02,790 va être une très facteur important dans la détermination 775 00:46:02,790 --> 00:46:05,420 quel candidat ils sont vais voter pour. 776 00:46:05,420 --> 00:46:07,120 Et ce est évidemment vrai en général. 777 00:46:07,120 --> 00:46:10,139 Et cela correspond à votre l'intuition, bien sûr. 778 00:46:10,139 --> 00:46:11,930 Donc, il semble que je suis de manquer de temps pour 779 00:46:11,930 --> 00:46:17,040 laissez-moi juste dois aller de l'avant et montrer quelques images rapides. 780 00:46:17,040 --> 00:46:21,120 Alors, voici quelque chose qui est un peu plus compliqué avec visualisation. 781 00:46:21,120 --> 00:46:26,450 Donc dans ce cas, ce est une très simple analyse de vérifier simplement ce que 782 00:46:26,450 --> 00:46:28,500 le président de '04 est. 783 00:46:28,500 --> 00:46:33,920 >> Donc dans ce cas, disons que vous voulu répondre à cette question. 784 00:46:33,920 --> 00:46:38,540 Donc, supposons que nous voulions connaître le vote comportement dans l'élection 2004 de président 785 00:46:38,540 --> 00:46:41,170 et comment qui varie selon la race. 786 00:46:41,170 --> 00:46:44,380 Ainsi, non seulement vous voulez voir le comportement de vote, 787 00:46:44,380 --> 00:46:47,860 mais vous voulez des sous-ensembles de chaque race et genre de résumer cela. 788 00:46:47,860 --> 00:46:50,770 Et vous ne pouvez dire par cette notation complexe 789 00:46:50,770 --> 00:46:52,580 que ce est une sorte d'obtenir brumeux. 790 00:46:52,580 --> 00:46:56,390 >> Donc, l'un des plus avancés R paquets qui est aussi un peu récente 791 00:46:56,390 --> 00:47:00,070 dplyr est appelé. 792 00:47:00,070 --> 00:47:03,060 Ce est donc celui-ici. 793 00:47:03,060 --> 00:47:08,080 Et ggplot2 ggg-- est juste une belle façon de faire de meilleures visualisations 794 00:47:08,080 --> 00:47:09,400 que celui intégré. 795 00:47:09,400 --> 00:47:11,108 >> Donc, je vais charger ces deux bibliothèques. 796 00:47:11,108 --> 00:47:13,200 797 00:47:13,200 --> 00:47:16,950 Et puis, je vais aller avant et exécuter cette commande. 798 00:47:16,950 --> 00:47:19,050 Vous pouvez simplement traiter cela comme une boîte noire. 799 00:47:19,050 --> 00:47:23,460 >> Ce qui se passe, ce est que ce tuyau opérateur passait dans cet argument 800 00:47:23,460 --> 00:47:24,110 en ici. 801 00:47:24,110 --> 00:47:28,070 Donc, je suis groupe disant par dat race et alors président 04. 802 00:47:28,070 --> 00:47:31,530 Et puis, tous ces autres commandes filtrons puis résumant 803 00:47:31,530 --> 00:47:34,081 où je fais comte et alors je tracer ici. 804 00:47:34,081 --> 00:47:39,980 805 00:47:39,980 --> 00:47:42,500 OK cool. 806 00:47:42,500 --> 00:47:44,620 Allons donc de l'avant et voir à quoi cela ressemble. 807 00:47:44,620 --> 00:47:52,280 808 00:47:52,280 --> 00:47:57,290 >> Donc ce qui se passe ici, ce est que je juste tracée chacune des courses et puis 809 00:47:57,290 --> 00:47:59,670 lesquels ils ont voté. 810 00:47:59,670 --> 00:48:03,492 Et ces deux différente correspondent à deux valeurs et une. 811 00:48:03,492 --> 00:48:05,325 Si vous voulez être plus élégant, vous pouvez aussi 812 00:48:05,325 --> 00:48:11,770 Il suffit de spécifier que 2 est Kerry-- ou 2 est Bush, puis 1 est Kerry. 813 00:48:11,770 --> 00:48:13,700 Et vous pouvez aussi avoir que, dans votre légende. 814 00:48:13,700 --> 00:48:17,410 >> Et vous pouvez aussi diviser ces graphiques à barres. 815 00:48:17,410 --> 00:48:19,480 Car une chose est que, si vous remarquez, 816 00:48:19,480 --> 00:48:24,560 ce ne est pas très facile d'identifier laquelle de ces deux valeurs sont plus grandes. 817 00:48:24,560 --> 00:48:27,920 Donc, une chose que vous voudriez faire est de profiter de cette zone bleue 818 00:48:27,920 --> 00:48:31,855 et juste le déplacer sur ici, donc vous pouvons comparer ces deux côte à côte. 819 00:48:31,855 --> 00:48:34,480 Et je suppose que ce est quelque chose que je ne ont pas le temps de faire en ce moment, 820 00:48:34,480 --> 00:48:36,660 mais ce est aussi très facile à faire. 821 00:48:36,660 --> 00:48:40,310 Vous pouvez simplement regarder dans les pages de manuel de ggplot. 822 00:48:40,310 --> 00:48:47,170 Ainsi, vous pouvez simplement ne ggplot comme cela et lire dans cette page de manuel. 823 00:48:47,170 --> 00:48:51,920 >> Alors permettez-moi de rapidement vous montrer quelques choses cool. 824 00:48:51,920 --> 00:48:57,610 Allons de l'avant et aller to-- juste une application de l'apprentissage de la machine. 825 00:48:57,610 --> 00:49:02,450 Alors disons que nous avons ces trois paquets je vais donc les charger dans. 826 00:49:02,450 --> 00:49:05,500 827 00:49:05,500 --> 00:49:09,170 Donc, ce contente d'afficher des information après je ai chargé dans la chose. 828 00:49:09,170 --> 00:49:15,220 Donc, je dis cela read.csv, cet ensemble de données, et maintenant 829 00:49:15,220 --> 00:49:18,940 Je vais aller de l'avant et regarder et voir ce qui est à l'intérieur de cet ensemble de données. 830 00:49:18,940 --> 00:49:22,080 >> Ainsi, les 20 premières observations. 831 00:49:22,080 --> 00:49:27,190 Donc, je ai juste X1, X2, et Y. Donc, il semble comme un tas de ces valeurs 832 00:49:27,190 --> 00:49:31,640 sont peut-être allant de 20 à 80 ou plus. 833 00:49:31,640 --> 00:49:37,700 Puis de même pour X2 et ensuite cette Y semble être étiquettes 0 et 1. 834 00:49:37,700 --> 00:49:49,500 >> Pour vérifier cela, je peux il suffit de faire des données sommaires X1. 835 00:49:49,500 --> 00:49:51,660 Puis de même pour toutes les autres colonnes. 836 00:49:51,660 --> 00:49:55,300 Donc résumé est un moyen rapide de tout en vous montrant des valeurs rapides. 837 00:49:55,300 --> 00:49:56,330 Oh, désolé. 838 00:49:56,330 --> 00:49:58,440 Celui-ci devrait être Y. 839 00:49:58,440 --> 00:50:03,420 >> Donc dans ce cas, la donne quantiles, médianes, plafonne ainsi. 840 00:50:03,420 --> 00:50:07,130 Dans ce cas, dataY, vous pouvez voir qu'il va juste être 0 et 1. 841 00:50:07,130 --> 00:50:10,100 Aussi la moyenne est dit 0,6, signifie simplement qu'il 842 00:50:10,100 --> 00:50:13,380 semble que je ai plus que 1s 0s. 843 00:50:13,380 --> 00:50:16,160 >> Alors laissez-moi aller de l'avant et de montrer vous ce que cela ressemble. 844 00:50:16,160 --> 00:50:17,470 Donc je vais juste pour tracer cette. 845 00:50:17,470 --> 00:50:22,852 846 00:50:22,852 --> 00:50:24,636 Voyons comment effacer cela. 847 00:50:24,636 --> 00:50:30,492 848 00:50:30,492 --> 00:50:31,468 Oh OK. 849 00:50:31,468 --> 00:50:35,840 850 00:50:35,840 --> 00:50:36,340 D'ACCORD. 851 00:50:36,340 --> 00:50:37,590 >> Donc, ce est à quoi il ressemble. 852 00:50:37,590 --> 00:50:46,310 Donc, il semble que je ai précisé jaunes 0, puis rouge je spécifie en 1s. 853 00:50:46,310 --> 00:50:52,190 Donc, ici, il ressemble points labels et qu'il 854 00:50:52,190 --> 00:50:56,410 semble que vous vouliez que quelques-uns sorte de regroupement à ce sujet. 855 00:50:56,410 --> 00:51:01,020 >> Et laissez-moi juste aller de l'avant et de montrer vous quelques-unes de ces fonctions intégrées. 856 00:51:01,020 --> 00:51:03,580 Voici donc lm. 857 00:51:03,580 --> 00:51:06,060 Donc, ce est juste essayer pour se adapter à une ligne à cela. 858 00:51:06,060 --> 00:51:08,640 Alors, quelle est la meilleure façon que je peux adapter une ligne telle 859 00:51:08,640 --> 00:51:14,020 qu'il sera mieux séparer ce genre de regroupement. 860 00:51:14,020 --> 00:51:21,790 Et idéalement, vous pouvez simplement voir que je viens de lancer toutes ces commandes 861 00:51:21,790 --> 00:51:25,450 puis, je vais y et ajoutez la ligne. 862 00:51:25,450 --> 00:51:28,970 >> Donc, cela semble être la meilleure estimation. 863 00:51:28,970 --> 00:51:34,150 Ce est en prenant le meilleur qui minimise l'erreur en essayant de se adapter à cette ligne. 864 00:51:34,150 --> 00:51:40,000 Évidemment, cela ressemble sorte de bon, mais ce ne est pas le meilleur. 865 00:51:40,000 --> 00:51:43,130 Et, dans les modèles linéaires général, vont être 866 00:51:43,130 --> 00:51:46,811 vraiment super pour la théorie et la sorte juste des fondamentaux de construction de la machine 867 00:51:46,811 --> 00:51:47,310 apprentissage. 868 00:51:47,310 --> 00:51:50,330 Mais dans la pratique, vous allez vouloir faire quelque chose de plus général. 869 00:51:50,330 --> 00:51:54,280 >> Ainsi, vous pouvez juste essayer de lancer ce qu'on appelle un réseau neuronal. 870 00:51:54,280 --> 00:51:57,110 Ces choses sont de plus en plus commun. 871 00:51:57,110 --> 00:52:00,530 Et ils fonctionnent fantastiquement pour les grands ensembles de données. 872 00:52:00,530 --> 00:52:07,080 Donc dans ce cas, nous ne have-- nous allons see-- nous avons nrow. 873 00:52:07,080 --> 00:52:09,010 Donc nrow dit simplement le nombre de lignes. 874 00:52:09,010 --> 00:52:11,790 Donc dans ce cas, je avoir 100 observations. 875 00:52:11,790 --> 00:52:15,010 >> Alors laissez-moi aller de l'avant et faire un réseau neuronal. 876 00:52:15,010 --> 00:52:18,620 Donc, ce est vraiment sympa parce que je peux juste dire nnet 877 00:52:18,620 --> 00:52:21,767 et puis je suis régression Y. Ainsi, le Y est cette colonne. 878 00:52:21,767 --> 00:52:23,850 Et puis régresser sur les deux autres variables. 879 00:52:23,850 --> 00:52:27,360 Donc, ce est plus court notation de X1 et X2. 880 00:52:27,360 --> 00:52:29,741 >> Donc, nous allons aller de l'avant et exécutez ce. 881 00:52:29,741 --> 00:52:30,240 Oh, désolé. 882 00:52:30,240 --> 00:52:32,260 Je ai besoin de courir toute cette affaire. 883 00:52:32,260 --> 00:52:37,500 Et ce ne est que l'impression notation pour combien rapidement ou pas rapidement, il 884 00:52:37,500 --> 00:52:38,460 convergé. 885 00:52:38,460 --> 00:52:41,420 Donc, il semble que ce ne convergent. 886 00:52:41,420 --> 00:52:44,970 Alors laissez-moi aller de l'avant et d'impression à quoi cela ressemble. 887 00:52:44,970 --> 00:52:51,260 >> Voir ici est l'image et est ici un contour montrant comment il se adapte. 888 00:52:51,260 --> 00:52:56,380 Et ce est just-- vous pouvez voir ce que ce est très, très agréable. 889 00:52:56,380 --> 00:52:59,400 Il pourrait même être overfitting, mais vous pouvez aussi 890 00:52:59,400 --> 00:53:03,390 rendre compte de ce que d'autres des techniques telles que la validation croisée. 891 00:53:03,390 --> 00:53:06,180 Et ceux-ci sont également intégrés dans R. 892 00:53:06,180 --> 00:53:09,170 >> Et permettez-moi de vous montrer Machine à vecteurs de support. 893 00:53:09,170 --> 00:53:12,470 Ce est une autre très commun technique dans l'apprentissage de la machine. 894 00:53:12,470 --> 00:53:18,550 Il est très similaire aux modèles linéaires, mais il utilise ce qu'on appelle une méthode du noyau. 895 00:53:18,550 --> 00:53:22,790 Et nous allons voir comment bien que cela fait. 896 00:53:22,790 --> 00:53:26,430 Ainsi, celui-ci est très semblable à la façon dont et un réseau neuronal exécute, 897 00:53:26,430 --> 00:53:27,900 mais ce est beaucoup plus lisse. 898 00:53:27,900 --> 00:53:35,740 Et ce est basé sur des what-- comment SVM travail. 899 00:53:35,740 --> 00:53:40,250 >> Donc, ce est juste une très aperçu rapide de certains 900 00:53:40,250 --> 00:53:43,822 des fonctions intégrées que vous pouvez faire et également une partie de l'exploration de données. 901 00:53:43,822 --> 00:53:45,905 Permettez-moi donc aller de l'avant et revenir sur les lames. 902 00:53:45,905 --> 00:53:50,290 903 00:53:50,290 --> 00:53:53,670 >> Alors, évidemment, ce est pas très complet. 904 00:53:53,670 --> 00:53:57,140 Et ce est vraiment juste un teaser vous montrer ce que vous pouvez vraiment faire dans R. 905 00:53:57,140 --> 00:53:59,100 Donc, si vous voudrais juste pour en savoir plus, voici 906 00:53:59,100 --> 00:54:01,210 sont un tas de différentes ressources. 907 00:54:01,210 --> 00:54:06,890 >> Donc, si vous êtes friands de manuels ou vous êtes simplement friands de lecture des choses en ligne, 908 00:54:06,890 --> 00:54:09,670 alors ce est un fantastique Hadley par une Wickham, 909 00:54:09,670 --> 00:54:13,010 qui a également créé tous ces paquets vraiment cool. 910 00:54:13,010 --> 00:54:17,420 Si vous êtes friands de vidéos, puis Berkeley a un bootcamp génial 911 00:54:17,420 --> 00:54:21,060 ce est several-- ce est sorte de long. 912 00:54:21,060 --> 00:54:24,210 Et il va vous apprendre presque tout ce que vous souhaitez savoir sur R. 913 00:54:24,210 --> 00:54:27,770 >> Et de même, il ya Codeacademy et toutes ces autres tri 914 00:54:27,770 --> 00:54:29,414 sites du interactifs. 915 00:54:29,414 --> 00:54:31,580 Ils obtiennent aussi common-- plus en plus commun. 916 00:54:31,580 --> 00:54:33,749 Donc, ce est très similaire à Codeacademy. 917 00:54:33,749 --> 00:54:35,790 Et enfin, si vous venez de Communauté et veulent aider, 918 00:54:35,790 --> 00:54:38,800 ceux-ci sont un tas de choses que vous pouvez aller. 919 00:54:38,800 --> 00:54:40,880 De toute évidence, nous avons encore utiliser des listes de diffusion, tout simplement 920 00:54:40,880 --> 00:54:44,860 comme presque tous les autres communauté de langage de programmation. 921 00:54:44,860 --> 00:54:47,880 Et #rstats, ce est notre communauté Twitter. 922 00:54:47,880 --> 00:54:49,580 Ce est tout à fait commun. 923 00:54:49,580 --> 00:54:50,850 Et puis utilisateur! 924 00:54:50,850 --> 00:54:52,340 Est juste notre conférence. 925 00:54:52,340 --> 00:54:55,390 >> Et puis, bien sûr, vous pouvez utiliser tous ces autres Q & A des choses, 926 00:54:55,390 --> 00:54:57,680 comme Stack Overflow, Google, puis GitHub. 927 00:54:57,680 --> 00:55:00,490 Parce que la plupart de ces paquets et beaucoup de la communauté 928 00:55:00,490 --> 00:55:03,420 sera centré autour du développement code, car il est open source. 929 00:55:03,420 --> 00:55:05,856 Et ce est vraiment gentil sur GitHub. 930 00:55:05,856 --> 00:55:08,730 Et enfin, vous pouvez me contacter si vous avez juste des questions rapides. 931 00:55:08,730 --> 00:55:13,530 Ainsi, vous pouvez me retrouver sur Twitter ici, mon site, et juste mon email. 932 00:55:13,530 --> 00:55:17,840 Donc, je espère, que ce était quelque chose-- juste un teaser court 933 00:55:17,840 --> 00:55:20,900 de ce que R est vraiment capable de faire. 934 00:55:20,900 --> 00:55:23,990 Et je espère, que vous venez de vérifier ces trois liens 935 00:55:23,990 --> 00:55:25,760 et voyez ce que vous pouvez faire plus. 936 00:55:25,760 --> 00:55:28,130 Et je suppose que ce est juste à ce sujet. 937 00:55:28,130 --> 00:55:28,630 Merci. 938 00:55:28,630 --> 00:55:30,780 >> [Applaudissements] 939 00:55:30,780 --> 00:55:31,968