1 00:00:00,000 --> 00:00:05,691 2 00:00:05,691 --> 00:00:07,690 CONNOR HARRIS: Still I denken einige spannende Video 3 00:00:07,690 --> 00:00:12,570 durch eine professionelle Beratung produziert daß R verwendet eine Menge in seine Arbeit. 4 00:00:12,570 --> 00:00:16,329 >> SPRECHER: Was verbirgt sich hinter den Statistiken, die Analyse und die Visualisierungen 5 00:00:16,329 --> 00:00:19,770 dass die heutigen hellsten Daten Wissenschaftler und Wirtschaftsführer setzen auf 6 00:00:19,770 --> 00:00:22,012 mächtige Entscheidungen zu treffen? 7 00:00:22,012 --> 00:00:23,540 Sie können nicht immer sehen. 8 00:00:23,540 --> 00:00:24,790 Aber es ist da. 9 00:00:24,790 --> 00:00:29,460 Es heißt R, r-- die Open-Source- statistische Programmiersprache 10 00:00:29,460 --> 00:00:32,630 dass Datenexperten die Welt über den Einsatz für alles 11 00:00:32,630 --> 00:00:35,350 von Mapping breiten gesellschaftlichen und Marketing-Trends Online 12 00:00:35,350 --> 00:00:39,210 zur Entwicklung der Finanz- und Klima Modelle, fahren unsere Volkswirtschaften zu helfen 13 00:00:39,210 --> 00:00:40,780 und Gemeinden. 14 00:00:40,780 --> 00:00:44,910 >> Aber was genau ist R und wo R starten? 15 00:00:44,910 --> 00:00:48,620 Nun ursprünglich, R begonnen hier mit zwei Professoren 16 00:00:48,620 --> 00:00:51,950 die eine bessere statistische wollte Plattform für ihre Studenten. 17 00:00:51,950 --> 00:00:56,030 So schufen sie ein Vorbild Nach dem statistischen Sprach S. 18 00:00:56,030 --> 00:01:00,480 Sie, zusammen mit vielen anderen, gehalten, die an und mit R, 19 00:01:00,480 --> 00:01:05,489 Erstellen Werkzeuge für R und der Suche nach neue Anwendungen für R jeden Tag. 20 00:01:05,489 --> 00:01:07,750 >> Dank diesem ist weltweite Community Anstrengung, 21 00:01:07,750 --> 00:01:11,850 R gehalten mit Tausenden wachsen der vom Benutzer erstellten Bibliotheken gebaut 22 00:01:11,850 --> 00:01:15,500 In den R-Funktionalität zu verbessern und Crowdsourcing-Qualitätsvalidierung 23 00:01:15,500 --> 00:01:19,740 und Unterstützung von der anerkanntesten Branchenführer in jedem Feld, 24 00:01:19,740 --> 00:01:25,040 nutzt R. Das ist sehr gut, denn R ist das Beste, was sie tut. 25 00:01:25,040 --> 00:01:28,540 Angehende Experten schnell und leicht zu interpretieren, interagieren, 26 00:01:28,540 --> 00:01:33,790 und Daten zu visualisieren, die ihre schnell wachsende Gemeinschaft von R-Nutzer weltweit 27 00:01:33,790 --> 00:01:36,380 und sehen, wie Open-Source- R weiter gestalten 28 00:01:36,380 --> 00:01:39,340 Die Zukunft der statistischen Analyse und Daten Wissenschaft. 29 00:01:39,340 --> 00:01:44,660 30 00:01:44,660 --> 00:01:47,710 >> CONNOR HARRIS: OK, groß. 31 00:01:47,710 --> 00:01:50,360 Also meine eigene Darstellung wird ein bisschen nüchterner. 32 00:01:50,360 --> 00:01:54,380 Es wird nicht beinhalten, dass ein Groß spannende Hintergrundmusik. 33 00:01:54,380 --> 00:01:59,160 Aber wie Sie im Video gesehen haben, ist R sort eines Allzweck-Programmiersprache. 34 00:01:59,160 --> 00:02:03,720 Aber es war vor allem erstellt für die statistische Arbeit. 35 00:02:03,720 --> 00:02:07,980 >> So ist es für die Statistik entwickelt, für Datenanalyse, für Data Mining. 36 00:02:07,980 --> 00:02:12,420 Und so können Sie dies in einem viel zu sehen die Design-Entscheidungen, dass die Macher von R 37 00:02:12,420 --> 00:02:13,320 gemacht. 38 00:02:13,320 --> 00:02:15,472 Es ist für die größtenteils entwickelt, Menschen, die nicht 39 00:02:15,472 --> 00:02:17,930 Experten in der Programmierung, der sind nur Abholung Programmierung 40 00:02:17,930 --> 00:02:23,460 an der Seite, so dass sie ihre Arbeit tun können in den Sozialwissenschaften oder in der Statistik 41 00:02:23,460 --> 00:02:25,440 oder Wasauchimmer. 42 00:02:25,440 --> 00:02:27,850 >> Es hat eine Menge sehr wichtige Unterschiede von C 43 00:02:27,850 --> 00:02:33,200 Aber die Syntax und die Paradigmen dass es verwendet im Großen und Ganzen die gleichen. 44 00:02:33,200 --> 00:02:36,830 Und Sie sollten recht fühlen viel zu Hause auf Anhieb. 45 00:02:36,830 --> 00:02:38,520 Es ist ein Imperativ Sprache. 46 00:02:38,520 --> 00:02:40,260 >> Sie nicht zu viel Sorgen zu machen wenn Sie nicht wissen, den Begriff. 47 00:02:40,260 --> 00:02:42,676 Aber es gibt einen Unterschied zwischen Imperativ, deklarativen, 48 00:02:42,676 --> 00:02:43,810 und funktional. 49 00:02:43,810 --> 00:02:47,600 Imperativ bedeutet nur, die Sie machen Aussagen, die im Grunde Befehle werden. 50 00:02:47,600 --> 00:02:52,340 Und dann der Dolmetscher oder der Computer folgt sie nacheinander. 51 00:02:52,340 --> 00:02:56,630 Es ist schwach typisierte, gibt es keine Typdeklarationen in R. 52 00:02:56,630 --> 00:02:59,130 >> Und dann die Linien zwischen verschiedenen Arten 53 00:02:59,130 --> 00:03:03,920 sind ein bisschen mehr lose als sie sind in C, zum Beispiel. 54 00:03:03,920 --> 00:03:06,450 Und wie ich schon sagte, es gibt sehr umfangreiche Ausstattung 55 00:03:06,450 --> 00:03:15,610 für die grafische Darstellung für statistische Analyse, für Data Mining. 56 00:03:15,610 --> 00:03:19,540 Diese werden sowohl in das eingebaute Sprache und, wie das Video, sagte, 57 00:03:19,540 --> 00:03:23,680 Tausende von Dritten Bibliotheken, können Sie herunterladen und kostenlos nutzen 58 00:03:23,680 --> 00:03:25,340 mit sehr lockeren Lizenzbedingungen. 59 00:03:25,340 --> 00:03:28,800 60 00:03:28,800 --> 00:03:31,500 >> So im Allgemeinen, würde ich empfehlen, dass Sie an diesen beiden Bücher schauen 61 00:03:31,500 --> 00:03:34,610 wenn Sie vorhaben, auf R. One arbeiten wollen von ihnen ist der offizielle R Anfänger 62 00:03:34,610 --> 00:03:35,110 Führer. 63 00:03:35,110 --> 00:03:38,660 Es ist durch die gepflegt Kernentwickler von R. 64 00:03:38,660 --> 00:03:42,400 Sie können sie erneut herunterladen, frei von aufladen und rechtlich zu diesem Link gibt. 65 00:03:42,400 --> 00:03:45,430 66 00:03:45,430 --> 00:03:49,869 Alle diese Folien gehen, um zu gehen oben auf dem Internet, auf CS50 Website 67 00:03:49,869 --> 00:03:50,660 Nachdem dies geschehen ist. 68 00:03:50,660 --> 00:03:53,690 So dass keine Notwendigkeit zu kopieren Dinge nach unten verzweifelt. 69 00:03:53,690 --> 00:03:56,800 >> Das andere ist ein Lehrbuch von Cosma Shalizi, 70 00:03:56,800 --> 00:04:00,100 , die eine Statistikprofessor an ist Carnegie Mellon, genannt Advanced Data 71 00:04:00,100 --> 00:04:02,160 Analysis von ein Elementary Point of View. 72 00:04:02,160 --> 00:04:04,010 Dies ist nicht in erster Linie ein R Buch. 73 00:04:04,010 --> 00:04:07,130 Es ist ein Buch und Statistiken es ist eine Datenanalyse Buch. 74 00:04:07,130 --> 00:04:11,990 Aber es ist sehr zugänglich für Menschen, haben ein gewisses Maß an Wissen Statistiken. 75 00:04:11,990 --> 00:04:13,750 >> Ich habe noch nie eine formale Verlauf genommen. 76 00:04:13,750 --> 00:04:17,269 Ich weiß nur, Bits und Stücke aus verschiedenen verbündeten Themen 77 00:04:17,269 --> 00:04:18,579 dass ich Kurse in gemacht. 78 00:04:18,579 --> 00:04:21,839 Und ich war in der Lage zu verstehen, es sehr gut. 79 00:04:21,839 --> 00:04:25,630 >> Alle Figuren sind, in R. Sie werden in R gemacht 80 00:04:25,630 --> 00:04:30,280 und sie haben auch Code unter jeder Figur, die Ihnen sagen, 81 00:04:30,280 --> 00:04:33,270 wie Sie machen jede Figur mit R-Code. 82 00:04:33,270 --> 00:04:37,400 Und das ist sehr nützlich, wenn Sie versuchen zu emulieren sind 83 00:04:37,400 --> 00:04:38,650 einige Zahl, die Sie in einem Buch zu sehen. 84 00:04:38,650 --> 00:04:47,840 >> Und wieder kostenloser Download stat.cmu.edu/cshalizi/ Sorry, 85 00:04:47,840 --> 00:04:50,230 dass Slash werden sollte Tilde cshalizi. 86 00:04:50,230 --> 00:04:53,150 Ich werde dafür sorgen, dass zu korrigieren , wenn die offizielle gleitet nach oben. 87 00:04:53,150 --> 00:04:57,000 / ADAfaEPoV, die gerade die ist Akronym der Buchtitel. 88 00:04:57,000 --> 00:04:59,850 89 00:04:59,850 --> 00:05:02,500 >> So allgemeinen caveats-- R hat eine Menge von Funktionen. 90 00:05:02,500 --> 00:05:05,331 Ich bin nur in der Lage sein zu decken die Oberfläche einer Menge Dinge. 91 00:05:05,331 --> 00:05:08,580 Auch der erste Teil des Seminars wird etwas von einem Daten-Dump zu sein. 92 00:05:08,580 --> 00:05:11,437 Ich bin mir ziemlich leid. 93 00:05:11,437 --> 00:05:13,770 Im Grunde bin ich zu gehen führen Sie in eine Menge Dinge, 94 00:05:13,770 --> 00:05:15,350 rechts von der Fledermaus, los schnellstens. 95 00:05:15,350 --> 00:05:17,058 Und dann haben wir zu bekommen der lustige Teil, das ist 96 00:05:17,058 --> 00:05:20,570 die Demo, wo ich kann dir alles zeigen dass wir etwa auf dem Bildschirm gesprochen. 97 00:05:20,570 --> 00:05:23,321 Und Sie können spielen, um auf eigene Faust. 98 00:05:23,321 --> 00:05:26,070 Also es geht um eine Menge sein, technischen Sachen auf hier geworfen. 99 00:05:26,070 --> 00:05:28,060 Nicht über das Kopieren von allem, was sich zu kümmern. 100 00:05:28,060 --> 00:05:31,740 Da A, können Sie alle Sachen auf dem CS50 Website später. 101 00:05:31,740 --> 00:05:37,780 Und B, es ist nicht wirklich so wichtig dies von den Objektträgern zu speichern. 102 00:05:37,780 --> 00:05:40,462 Es ist wichtiger, dass Sie einige intuitive Anlage mit es 103 00:05:40,462 --> 00:05:44,220 und das kommt nur herum spielen. 104 00:05:44,220 --> 00:05:45,720 >> Warum also R? 105 00:05:45,720 --> 00:05:49,440 Grundsätzlich, wenn Sie ein Projekt haben, dass beinhaltet Bergbau große Datensätze, Daten 106 00:05:49,440 --> 00:05:52,664 Visualisierung, die Sie sollte R. verwenden Wenn Sie 107 00:05:52,664 --> 00:05:55,830 Dabei komplizierte statistische Analysen, dass wäre es schwierig, in Excel, 108 00:05:55,830 --> 00:05:58,010 Beispielsweise wäre es außerdem auch good-- werden 109 00:05:58,010 --> 00:06:00,506 wenn du tust statistischen Analyse, die automatisiert ist. 110 00:06:00,506 --> 00:06:02,130 Sagen wir, du bist Pflege einer Website. 111 00:06:02,130 --> 00:06:06,320 Und Sie den Server Log lesen wollen jeden Tag und kompilieren eine Liste, 112 00:06:06,320 --> 00:06:10,320 wie die Top-Länder, Ihre Benutzer herkommen, 113 00:06:10,320 --> 00:06:15,100 einige zusammenfassende Statistiken, wie lange verbringen sie auf Ihrer Website oder was auch immer. 114 00:06:15,100 --> 00:06:16,910 Und Sie, dies jeden Tag ausgeführt werden soll. 115 00:06:16,910 --> 00:06:20,280 >> Nun, wenn Sie dies tun in Excel, Sie müssten, um ihren Server Log zu gehen, 116 00:06:20,280 --> 00:06:23,490 importieren, die in eine Excel-Daten-Tabelle, 117 00:06:23,490 --> 00:06:24,910 laufen die ganze Analyse manuell. 118 00:06:24,910 --> 00:06:27,100 Mit R können Sie schreiben Sie einfach ein Skript. 119 00:06:27,100 --> 00:06:29,520 Planen Sie es jeden Tag zu laufen von Ihrem Betriebssystem. 120 00:06:29,520 --> 00:06:33,657 Und dann jeden Abend um 02.00 Uhr, oder wann immer Sie es planen zu laufen, 121 00:06:33,657 --> 00:06:35,990 sie schauen durch Ihre Internet-Verkehr für diesen Tag. 122 00:06:35,990 --> 00:06:39,010 Und dann am nächsten Tag, werden Sie haben diese glänzenden, neuen Bericht 123 00:06:39,010 --> 00:06:41,710 oder was auch immer mit allen Informationen, die Sie beantragt. 124 00:06:41,710 --> 00:06:44,960 125 00:06:44,960 --> 00:06:50,217 >> Also im Grunde R ist für Cisco Programmierung gegenüber Cisco Analyse. 126 00:06:50,217 --> 00:06:51,050 Vorläufige ist getan. 127 00:06:51,050 --> 00:06:53,104 Lassen Sie uns in die reale Dinge zu bekommen. 128 00:06:53,104 --> 00:06:55,020 So gibt es drei echte Typen in der Sprache. 129 00:06:55,020 --> 00:06:56,120 Es gibt numerischen Typ. 130 00:06:56,120 --> 00:07:01,250 Es ist eine Art Unterschied zwischen Ganz- und Fließpunkte, 131 00:07:01,250 --> 00:07:02,769 aber nicht wirklich. 132 00:07:02,769 --> 00:07:04,560 Es gibt einen Charakter Typ, der Zeichenfolgen ist. 133 00:07:04,560 --> 00:07:07,100 Und es gibt eine logische Art, die boolesche Werte ist. 134 00:07:07,100 --> 00:07:11,080 >> Und Sie zwischen Typen umwandeln kann Verwendung dieser Funktionen, wie numerisch, 135 00:07:11,080 --> 00:07:15,220 als Charakter, als logisch. 136 00:07:15,220 --> 00:07:17,510 Wenn Sie anrufen, zum Beispiel, als numerisch auf einer Schnur, 137 00:07:17,510 --> 00:07:20,030 wird es versuchen, diese Zeichenfolge zu lesen als eine Zahl, auf die gleiche Weise 138 00:07:20,030 --> 00:07:25,897 dass a2i und scanf zu tun, und C. Wenn Sie als Zahlen auf wahr oder falsch nennen 139 00:07:25,897 --> 00:07:26,980 es wird auf 1 oder 0 umwandeln. 140 00:07:26,980 --> 00:07:29,110 Wenn Sie als Zeichen nennen auf etwas, es wird 141 00:07:29,110 --> 00:07:32,550 umzuwandeln, die in eine Zeichenfolgendarstellung. 142 00:07:32,550 --> 00:07:34,990 >> Und dann gibt es Vektoren und Matrizen. 143 00:07:34,990 --> 00:07:37,580 So Vektoren sind im Grunde 1 dimensionale Arrays. 144 00:07:37,580 --> 00:07:40,600 Sie sind, was wir als Arrays in C. Matrizen, 2-dimensionale Arrays. 145 00:07:40,600 --> 00:07:42,350 Und dann höher dimensionale Arrays möglich 146 00:07:42,350 --> 00:07:48,560 haben 3, 4, 5 Dimensionen oder was auch immer numerischer Werte, von Strings, 147 00:07:48,560 --> 00:07:52,860 von Logikwerten. 148 00:07:52,860 --> 00:07:55,380 >> Sie haben auch Listen, die sind eine Art assoziatives Array. 149 00:07:55,380 --> 00:07:57,390 Ich werde in diese ein wenig zu bekommen. 150 00:07:57,390 --> 00:07:59,390 So eine wichtige Sache dass Ausflüge Menschen in R 151 00:07:59,390 --> 00:08:01,470 ist, dass es keinen real, reine Atomtypen. 152 00:08:01,470 --> 00:08:05,870 Es gibt keinen tatsächlichen Unterschied zwischen eine Zahl, wie ein Zahlenwert, 153 00:08:05,870 --> 00:08:07,920 und eine Liste von numerischen Werten. 154 00:08:07,920 --> 00:08:12,370 Numerische Werte sind eigentlich die dieselben wie die Vektoren der Länge 1. 155 00:08:12,370 --> 00:08:14,959 Und dies hat eine Anzahl von wichtige Implikationen. 156 00:08:14,959 --> 00:08:17,500 One, bedeutet dies, dass Sie tun können, Dinge sehr leicht, die beinhalten 157 00:08:17,500 --> 00:08:21,037 wie das Hinzufügen einer Zahl in einen Vektor. 158 00:08:21,037 --> 00:08:23,120 R wird im Wesentlichen Figur heraus, was Sie damit meinen. 159 00:08:23,120 --> 00:08:24,610 Und ich werde, um in einem zweiten zu bekommen. 160 00:08:24,610 --> 00:08:27,930 Es bedeutet auch, dass es keine Möglichkeit gibt für die Aktivität in dem Ausmaß checker-- 161 00:08:27,930 --> 00:08:30,530 dass so etwas existiert in R- zu sagen, 162 00:08:30,530 --> 00:08:33,780 wenn Sie in der Einzelwert bestanden habe wenn es erwartet ein Array oder umgekehrt. 163 00:08:33,780 --> 00:08:39,159 Und dass einige seltsame verursachen können Probleme, die ich lief in, wenn 164 00:08:39,159 --> 00:08:42,252 Ich war mit R während meiner Sommerjob. 165 00:08:42,252 --> 00:08:43,710 Und es gibt keine Mischtyp-Arrays. 166 00:08:43,710 --> 00:08:46,543 So kann man nicht haben ein Array waren die ersten Elemente ist, weiß ich nicht, 167 00:08:46,543 --> 00:08:49,332 die Zeichenfolge "John" und die zweite Element ist die Nummer 42. 168 00:08:49,332 --> 00:08:52,540 Wenn Sie versuchen, das zu tun, dann werden Sie bekommen einfach alles in einen String konvertiert. 169 00:08:52,540 --> 00:08:54,760 So haben wir John String, String 42. 170 00:08:54,760 --> 00:08:58,250 171 00:08:58,250 --> 00:09:02,025 >> So ungewöhnlichen syntaktischen Eigenschaften-- meisten R Syntax ist sehr ähnlich zu C. 172 00:09:02,025 --> 00:09:04,690 Es gibt ein paar wichtige Unterschiede. 173 00:09:04,690 --> 00:09:05,620 Typing ist sehr schwach. 174 00:09:05,620 --> 00:09:07,360 Es gibt also keine Variablendeklarationen. 175 00:09:07,360 --> 00:09:12,670 Zuordnung verwendet die seltsame Fehlerbetreiber weniger als Bindestrich. 176 00:09:12,670 --> 00:09:15,340 Kommentare sind mit dem Doppelkreuz. 177 00:09:15,340 --> 00:09:19,230 Ich denke, jetzt Tage nennen wir es hashtag aber das ist nicht wirklich accurate-- nicht 178 00:09:19,230 --> 00:09:21,810 die doppelten Schrägstrich. 179 00:09:21,810 --> 00:09:24,710 >> Modular Reste mit %% Zeichen. 180 00:09:24,710 --> 00:09:30,172 Ganzzahl-Division ist mit% /%, die ist sehr schwer zu lesen, wenn es projiziert 181 00:09:30,172 --> 00:09:30,880 auf dem Bildschirm erscheint. 182 00:09:30,880 --> 00:09:34,150 183 00:09:34,150 --> 00:09:37,200 Sie können Bereiche erhalten ganze Zahlen mit dem Doppelpunkt. 184 00:09:37,200 --> 00:09:41,840 Also 2,5 wird Ihnen ein Vektor- aller Zahlen 2 bis 5. 185 00:09:41,840 --> 00:09:44,530 >> Arrays sind eine indizierte, die Schrauben eine Menge Leute, 186 00:09:44,530 --> 00:09:47,540 up, wenn sie aus mehr sind typischen Programmiersprachen, 187 00:09:47,540 --> 00:09:50,450 wie C, wo die meisten Dinge sind Null indizierten. 188 00:09:50,450 --> 00:09:54,420 Auch dies ist in der R Erbe als Sprache für wie nicht 189 00:09:54,420 --> 00:09:56,560 professionellen Programmierern kommt in. 190 00:09:56,560 --> 00:09:59,680 Wenn Sie einen Soziologen sind oder ein Wirtschaftswissenschaftler oder etwas 191 00:09:59,680 --> 00:10:01,980 und Sie verwenden möchten, sind R grundsätzlich als Ergänzung 192 00:10:01,980 --> 00:10:03,832 um Ihren wichtiger professionelle Arbeit, 193 00:10:03,832 --> 00:10:06,040 Sie gehen zu finden sind one-Indizierung ein bisschen mehr natürliche. 194 00:10:06,040 --> 00:10:09,890 Weil Sie das Zählen beginnen bei 1 im Alltag, nicht 0. 195 00:10:09,890 --> 00:10:13,260 >> For-Schleifen, ist dies ähnlich die foreach-Konstrukt in PHP, 196 00:10:13,260 --> 00:10:17,090 wo es zu bekommen, lernen in-- ziemlich bald. 197 00:10:17,090 --> 00:10:22,540 Welches ist für Wert im Vektor und dann haben Sie die Dinge mit dem Wert zu tun. 198 00:10:22,540 --> 00:10:24,040 Publikum: Das liegt in der Vorlesung zu kommen. 199 00:10:24,040 --> 00:10:26,248 CONNOR HARRIS: Oh, das ist kommen Vortrag ausgezeichnet. 200 00:10:26,248 --> 00:10:29,815 Publikum: Die Zuordnung ist es soll von rechts zeigen nach links? 201 00:10:29,815 --> 00:10:31,440 CONNOR HARRIS: Von rechts nach links, ja. 202 00:10:31,440 --> 00:10:34,720 Sie können es, wenn der Wert auf zu denken der rechte in der Variablen schob 203 00:10:34,720 --> 00:10:36,240 auf der Linken. 204 00:10:36,240 --> 00:10:36,781 ZIELGRUPPE: OK. 205 00:10:36,781 --> 00:10:39,770 206 00:10:39,770 --> 00:10:42,330 >> CONNOR HARRIS: Und schließlich Funktion Syntax ist ein wenig seltsam. 207 00:10:42,330 --> 00:10:48,460 Sie haben den Namen der Funktion foo zugeordnet zu diesem Schlagwort Funktion, gefolgt 208 00:10:48,460 --> 00:10:51,530 durch alle Argumente und dann die Rumpf der Funktion danach. 209 00:10:51,530 --> 00:10:53,280 Wieder diese Dinge scheint ein wenig seltsam. 210 00:10:53,280 --> 00:10:57,181 Sie werden zur zweiten Natur geworden, nachdem Sie arbeiten mit der Sprache für ein bisschen. 211 00:10:57,181 --> 00:10:58,930 So Vektoren, die Art und Weise Sie ein Vektorkonstrukt 212 00:10:58,930 --> 00:11:04,550 Sie ist vom Typ C, der ein Schlüsselwort ist, dann alle Zahlen Sie wollen oder Strings 213 00:11:04,550 --> 00:11:06,490 oder Wasauchimmer. 214 00:11:06,490 --> 00:11:07,995 Argumente auch Vektoren sein. 215 00:11:07,995 --> 00:11:09,620 Aber das resultierende Array wird abgeflacht. 216 00:11:09,620 --> 00:11:14,385 Sie können also nicht Arrays, wo haben Einige Elemente sind einzelne Zahlen 217 00:11:14,385 --> 00:11:17,010 und einige Elemente sind Arrays selbst. 218 00:11:17,010 --> 00:11:20,010 >> Also, wenn Sie versuchen, eine zu bauen Array waren das erste Element 4 219 00:11:20,010 --> 00:11:22,370 und das zweite Element ist das Array 3,5 Sie 220 00:11:22,370 --> 00:11:25,890 einfach nur ein Array drei Elemente, 4,3,5. 221 00:11:25,890 --> 00:11:27,760 Sie können nicht von Mischtyp sein. 222 00:11:27,760 --> 00:11:32,290 Wenn Sie versuchen, lesen und schreiben außerhalb der Grenzen eines Vektors 223 00:11:32,290 --> 00:11:36,640 Sie werden diesen Wert genannt NA a erhalten das steht für einen fehlenden Wert. 224 00:11:36,640 --> 00:11:39,900 Und dies ist vorgesehen für wie Statistiker, 225 00:11:39,900 --> 00:11:43,080 sind mit unvollständigen Datensätzen arbeiten. 226 00:11:43,080 --> 00:11:46,460 >> Wenn Sie eine Funktion, die angeblich ist anzuwenden auf nur eine Zahl auf ein Array zu nehmen 227 00:11:46,460 --> 00:11:49,220 dann, was Sie bekommen, desto Funktion wird über das Array abzubilden. 228 00:11:49,220 --> 00:11:52,130 Also, wenn Ihre Funktion an, dauert lassen eine Zahl und gibt diesen Platz. 229 00:11:52,130 --> 00:11:58,170 Sie gelten, dass auf das Array 2,3,5 Was Sie bekommen ist das Array 4,9,25. 230 00:11:58,170 --> 00:12:00,010 >> Und das ist sehr nützlich, weil es bedeutet, dass Sie 231 00:12:00,010 --> 00:12:03,374 nicht haben, um für die Schlaufen für Schreib tut sehr einfache Dinge wie die Anwendung 232 00:12:03,374 --> 00:12:05,040 eine Funktion, um alle Mitglieder des Datensatzes. 233 00:12:05,040 --> 00:12:08,557 Was, wenn Sie mit großen Arbeits Datensätze, müssen Sie eine Menge zu tun. 234 00:12:08,557 --> 00:12:10,390 Binäre Funktionen angewandter Eintrag für Eintrag. 235 00:12:10,390 --> 00:12:12,430 Ich werde in das zu bekommen. 236 00:12:12,430 --> 00:12:16,750 Sie können sie mit Arrays zugreifen oder Vektoren mit eckigen Klammern. 237 00:12:16,750 --> 00:12:22,300 So Vektornamen in eckigen Klammern 1 wird Ihnen das erste Element. 238 00:12:22,300 --> 00:12:25,510 Vector Namen eckigen Klammern 2 wird Ihnen das zweite Element. 239 00:12:25,510 --> 00:12:27,530 >> Sie können auf einem Vektor übergeben von Indizes und Sie werden 240 00:12:27,530 --> 00:12:29,640 wieder heraus im Grunde ein Unterfaktor. 241 00:12:29,640 --> 00:12:34,990 So können Sie Vektornamen Klammern C tun können, 2,4 und Sie erhalten einen Vektor, der 242 00:12:34,990 --> 00:12:38,804 die zweite und vierte Elemente des Arrays. 243 00:12:38,804 --> 00:12:40,720 Und wenn Sie wollen einfach nur ein kurze Zusammenfassung statistik 244 00:12:40,720 --> 00:12:47,529 eines Vektors wie Quartils Palette, Median, Maximum, was auch immer, 245 00:12:47,529 --> 00:12:49,820 Sie können einfach Typenübersicht Vektor-Namen und erhalten, dass aus. 246 00:12:49,820 --> 00:12:52,680 Das ist nicht in wirklich nützlich Programmierung, aber wenn Sie spielen 247 00:12:52,680 --> 00:12:55,990 um die Datenmengen, ist es praktisch. 248 00:12:55,990 --> 00:12:58,650 >> Matrices-- Grunde höherdimensionalen Arrays. 249 00:12:58,650 --> 00:13:01,190 Sie haben diese spezielle Notation Syntax. 250 00:13:01,190 --> 00:13:07,620 Matrix mit einer Anordnung, die bekommt in-- sorry, Matrix mit Daten gefüllt, 251 00:13:07,620 --> 00:13:09,780 Anzahl von Zeilen, Anzahl von Spalten. 252 00:13:09,780 --> 00:13:13,180 Wenn Sie einige Daten haben, füllt es in das Array im Grunde geht von oben nach unten 253 00:13:13,180 --> 00:13:13,380 erste. 254 00:13:13,380 --> 00:13:14,190 Dann links nach rechts. 255 00:13:14,190 --> 00:13:15,030 So, so. 256 00:13:15,030 --> 00:13:17,809 257 00:13:17,809 --> 00:13:19,600 Und R ist eingebaut Matrixmultiplikationen, 258 00:13:19,600 --> 00:13:24,310 spektrale Zerlegung, Diagonalisierung, eine Menge Dinge. 259 00:13:24,310 --> 00:13:27,785 Wenn Sie höherdimensionalen möchten Arrays, SO 3, 4, 5, 260 00:13:27,785 --> 00:13:29,410 oder was auch immer Dimensionen können Sie das tun. 261 00:13:29,410 --> 00:13:34,400 Die Syntax ist Array dim gleich c, wird die Liste der Dimensionen. 262 00:13:34,400 --> 00:13:38,620 Also, wenn Sie ein 4-dimensionales Array möchten mit den Abmessungen 4, 7, 8, 9, wobei die Anordnung, 263 00:13:38,620 --> 00:13:45,470 dim ist gleich c (4,7,8,9). 264 00:13:45,470 --> 00:13:51,180 >> Der Zugriff auf einzelne Werte mit Klammern erster Eintrag Komma zweiten Eintrag. 265 00:13:51,180 --> 00:13:54,870 Sie können ganze Scheiben erhalten von Zeilen oder Spalten. 266 00:13:54,870 --> 00:13:59,900 Mit diesem unvollständiger Syntax ist es nur Zeilennummer Komma oder Komma Spalte 267 00:13:59,900 --> 00:14:00,400 Anzahl. 268 00:14:00,400 --> 00:14:02,874 269 00:14:02,874 --> 00:14:04,540 So Listen sind eine Art von assoziierten Array. 270 00:14:04,540 --> 00:14:06,360 Sie haben ihre eigene Syntax hier. 271 00:14:06,360 --> 00:14:08,320 Wieder nicht hektisch kopieren Sie alle diese nach unten. 272 00:14:08,320 --> 00:14:11,370 Dies ist nur so, dass die Menschen gehen durch die Folien später 273 00:14:11,370 --> 00:14:13,089 haben dies alles in einer schönen Referenz. 274 00:14:13,089 --> 00:14:16,130 Und das wird sehr natürlich einmal geworden Ich eigentlich zu Fuß durch die Demos. 275 00:14:16,130 --> 00:14:19,295 276 00:14:19,295 --> 00:14:20,920 So listet ein grundsätzlich zugehörigen Arrays. 277 00:14:20,920 --> 00:14:27,040 Sie können Werte mit Zugang Listenname, Dollarzeichen, Taste. 278 00:14:27,040 --> 00:14:31,370 Also, wenn Sie Ihre Liste namens foo, dann haben Sie es so, zugreifen können. 279 00:14:31,370 --> 00:14:37,032 Sie können einen ganzen Schlüssel-Wert-Paar zu bekommen indem in der eckigen Klammer-Index. 280 00:14:37,032 --> 00:14:39,240 Wenn Sie von einem nicht existierenden lesen Taste, erhalten Sie null. 281 00:14:39,240 --> 00:14:41,150 Es wird nicht Fehler. 282 00:14:41,150 --> 00:14:43,590 Das Ding ist, R wird, wie zu tun viel mit null, wie es kann. 283 00:14:43,590 --> 00:14:46,580 Und dies kann bedeuten, dass, wenn Sie nicht erwartet, null raus 284 00:14:46,580 --> 00:14:51,840 irgendeiner Liste zu lesen, werden Sie einige bekommen unvorhersehbaren Fehlern weiter unten 285 00:14:51,840 --> 00:14:52,620 die Linie. 286 00:14:52,620 --> 00:14:54,890 >> So erging es mir meine Sommer-Job, als ich mit R 287 00:14:54,890 --> 00:14:58,410 wo ich verändert, wie eine bestimmte Liste wurde an einer Stelle definiert, 288 00:14:58,410 --> 00:15:05,410 aber nicht später das ändern Code, der Werte aus es zu lesen. 289 00:15:05,410 --> 00:15:10,190 Und so, was passiert war, war ich Lesen NULL-Werte aus dieser Liste, 290 00:15:10,190 --> 00:15:13,090 Weitergabe in Funktionen, und sehr verwirrt, 291 00:15:13,090 --> 00:15:16,000 wenn ich alle Arten von Zufalls Unendlichkeiten tauchten 292 00:15:16,000 --> 00:15:16,790 in dieser Funktion. 293 00:15:16,790 --> 00:15:20,730 Denn wenn Sie bestimmte maximale gelten oder minimalen Funktionen auf null, 294 00:15:20,730 --> 00:15:22,570 Du unendliche Werte raus. 295 00:15:22,570 --> 00:15:26,400 296 00:15:26,400 --> 00:15:29,180 >> Datenrahmen, sie sind eine Unterklasse der Liste. 297 00:15:29,180 --> 00:15:31,170 Jeder Wert ist eine Vektor- der gleichen Länge. 298 00:15:31,170 --> 00:15:34,220 Und sie sind für die Darstellung verwendet wird, Grundsätzlich Datentabellen. 299 00:15:34,220 --> 00:15:36,175 Es gibt diese Initialisierung Syntax. 300 00:15:36,175 --> 00:15:38,800 Dies alles wiederum viel sein klarer, wenn Sie sich an die Demo. 301 00:15:38,800 --> 00:15:42,240 302 00:15:42,240 --> 00:15:44,240 Und das Schöne an Datenrahmen ist, dass man 303 00:15:44,240 --> 00:15:49,380 können Namen auf alle Spalten geben und Namen aller Reihen. 304 00:15:49,380 --> 00:15:53,890 Und das macht den Zugriff auf sie etwas freundlicher. 305 00:15:53,890 --> 00:15:59,130 Auch dies ist, wie die meisten Funktionen, lesen Sie in Daten aus Excel-Tabellen 306 00:15:59,130 --> 00:16:03,820 oder von Text-Dateien, beispielsweise werden in ihren Daten zu lesen. 307 00:16:03,820 --> 00:16:07,555 Sie werden es kannst eine Art von Datenrahmen. 308 00:16:07,555 --> 00:16:09,680 So functions-- Funktionen Syntax ist ein wenig seltsam. 309 00:16:09,680 --> 00:16:16,160 Wieder ist es der Name der Funktion, zuzuordnen, dieses Schlüsselwort-Funktion und dann 310 00:16:16,160 --> 00:16:17,900 die Liste der Argumente. 311 00:16:17,900 --> 00:16:24,080 So gibt es einige schöne Dinge darüber, wie Funktionen arbeiten hier. 312 00:16:24,080 --> 00:16:28,170 Zum einen, die Sie tatsächlich zuweisen können Standardwerte für bestimmte Argumente. 313 00:16:28,170 --> 00:16:32,910 So können Sie R1 sagen equals-- Sie foo sagen 314 00:16:32,910 --> 00:16:38,290 ist eine Funktion, wobei R1 gleich etwas standardmäßig, wenn der Benutzer legt fest, 315 00:16:38,290 --> 00:16:39,090 keine Argumente. 316 00:16:39,090 --> 00:16:41,932 Ansonsten ist es, was er in. 317 00:16:41,932 --> 00:16:44,140 Und das ist sehr praktisch, weil eine Menge von unseren Funktionen 318 00:16:44,140 --> 00:16:47,910 haben oft Dutzende oder Hunderte von Argumenten. 319 00:16:47,910 --> 00:16:51,210 Zum Beispiel die, die zum Plotten Diagramme oder Plotten Streudiagramme 320 00:16:51,210 --> 00:16:54,430 Argumente haben, die steuern, alles, was aus dem Titel und der Achse 321 00:16:54,430 --> 00:16:59,512 Etiketten auf die Farbe der Regressionsgeraden. 322 00:16:59,512 --> 00:17:01,470 Und so, wenn Sie nicht wollen, um die Menschen angeben, 323 00:17:01,470 --> 00:17:04,050 jeder einzelne von ihnen Hunderte von Argumenten 324 00:17:04,050 --> 00:17:07,674 Steuern jeden einzelnen Aspekt eine Kurve oder eine Regression oder was auch immer, 325 00:17:07,674 --> 00:17:09,299 es ist schön, diese Standardwerte haben. 326 00:17:09,299 --> 00:17:12,700 327 00:17:12,700 --> 00:17:19,146 >> Und dann können Sie tatsächlich schreiben, wie Sie hierher zurück sah. 328 00:17:19,146 --> 00:17:22,869 Oder finden Sie ein besseres Beispiel. 329 00:17:22,869 --> 00:17:28,690 Wenn Sie Funktionen aufrufen, können Sie tatsächlich nennen sie mit den Argumentnamen. 330 00:17:28,690 --> 00:17:33,919 Also hier ist ein Beispiel dafür, die Matrix-Konstruktor. 331 00:17:33,919 --> 00:17:34,960 Es dauert drei Argumente. 332 00:17:34,960 --> 00:17:36,760 In der Regel müssen Sie Daten, welches ein Vektor ist. 333 00:17:36,760 --> 00:17:38,920 Sie haben N Reihe, die ist die Anzahl der Zeilen. 334 00:17:38,920 --> 00:17:41,160 Sie haben N cols-- Anzahl der Spalten. 335 00:17:41,160 --> 00:17:43,920 Die Sache ist, wenn Sie geben N Reihe gleich was auch immer 336 00:17:43,920 --> 00:17:46,520 und N col gleich, was auch immer, wenn Sie Aufruf dieser Funktion, 337 00:17:46,520 --> 00:17:47,770 können Sie tatsächlich stornieren. 338 00:17:47,770 --> 00:17:51,590 So können Sie N col erste und N Zeile setzen zweiten, und es wird keinen Unterschied machen. 339 00:17:51,590 --> 00:17:54,660 Also das ist ein nettes kleines Feature. 340 00:17:54,660 --> 00:17:56,260 >> Wussten Import und Export. 341 00:17:56,260 --> 00:18:00,010 Dies getan werden kann, im Grunde. 342 00:18:00,010 --> 00:18:03,816 Es gibt auch Einrichtungen zu schreiben beliebige R-Objekte in eine Binärdatei 343 00:18:03,816 --> 00:18:05,190 und dann lesen sie wieder in später. 344 00:18:05,190 --> 00:18:08,030 Das ist praktisch, wenn Sie tun, eine große interaktive Sitzung R 345 00:18:08,030 --> 00:18:12,850 und Sie speichern müssen Dinge sehr schnell. 346 00:18:12,850 --> 00:18:16,460 Standardmäßig R hat ein Arbeitsverzeichnis dass Dateien raus in geschrieben 347 00:18:16,460 --> 00:18:19,410 und lesen Sie wieder aus. 348 00:18:19,410 --> 00:18:22,350 Sie können, dass mit zu sehen getwg, ändern Sie es mit setdw. 349 00:18:22,350 --> 00:18:25,630 Nichts besonders interessant hier 350 00:18:25,630 --> 00:18:28,270 >> So, jetzt die tatsächlichen Statistiken stuff-- multilineare Regression. 351 00:18:28,270 --> 00:18:30,960 352 00:18:30,960 --> 00:18:34,910 Also die übliche Syntax ist ein wenig kompliziert. 353 00:18:34,910 --> 00:18:37,260 Das Modell ist eine große Aufgabe im Grunde. 354 00:18:37,260 --> 00:18:39,910 Es wird beauftragt, LM, Das ist ein Funktionsaufruf. 355 00:18:39,910 --> 00:18:43,840 Das erste Element, das y Tilde x1 und was auch immer. 356 00:18:43,840 --> 00:18:46,574 357 00:18:46,574 --> 00:18:47,990 Meine Syntax hier ist ein wenig verwirrend. 358 00:18:47,990 --> 00:18:49,490 Ich bin mir ziemlich Entschuldigung, das hier ist der normale Weg 359 00:18:49,490 --> 00:18:50,990 dass Informatik Bücher tun. 360 00:18:50,990 --> 00:18:54,890 Aber es ist ein bisschen komisch. 361 00:18:54,890 --> 00:18:58,200 >> Also im Grunde ist es lm Klammern, erster Punkt 362 00:18:58,200 --> 00:19:06,730 wird'variable sorry, abhängig variable Tilde x1 und x2 sowie 363 00:19:06,730 --> 00:19:10,910 aber viele unabhängige Variablen, die Sie haben. 364 00:19:10,910 --> 00:19:14,240 Und dann können diese entweder Vektoren, die alle die gleiche Länge. 365 00:19:14,240 --> 00:19:16,220 Oder sie können Spalte Header in einem Datenrahmen 366 00:19:16,220 --> 00:19:18,553 dass Sie gerade in die angeben, zweite Argument Datenrahmen. 367 00:19:18,553 --> 00:19:23,270 368 00:19:23,270 --> 00:19:26,380 >> Sie können auch angeben eine komplexere Formel 369 00:19:26,380 --> 00:19:31,990 so dass Sie nicht linear müssen bilden eine eine abhängige Variable, 370 00:19:31,990 --> 00:19:34,440 oder eines Vektors auf einen vorbestehenden Vektor. 371 00:19:34,440 --> 00:19:38,070 Sie können tun, zum Beispiel ein Vektorkomponente y quadriert plus 1 372 00:19:38,070 --> 00:19:42,100 und zurückbilden, die gegen die melden Sie sich von einem anderen Vektor. 373 00:19:42,100 --> 00:19:45,200 Sie können Zusammenfassungen des Druck Modell mit diesem Befehl aufgerufen 374 00:19:45,200 --> 00:19:48,607 summary-- nur Zusammenfassung parens Modell. 375 00:19:48,607 --> 00:19:50,190 Wieder etwas, was ich zu klären sollte. 376 00:19:50,190 --> 00:19:55,407 377 00:19:55,407 --> 00:19:58,615 Etwas anderes, die korrigiert bekommen Wenn die Objektträger nach oben über das Internet. 378 00:19:58,615 --> 00:20:01,127 379 00:20:01,127 --> 00:20:03,210 Wenn Sie nur wollen, um zu berechnen eine einfache Korrelations 380 00:20:03,210 --> 00:20:09,170 Sie Korrelationsvektor verwenden können 1 Vektor-2 Funktionskern. 381 00:20:09,170 --> 00:20:11,856 Methode ist standardmäßig Pearson-Korrelationen. 382 00:20:11,856 --> 00:20:13,480 Das sind die Standard, die Sie tun können. 383 00:20:13,480 --> 00:20:15,990 Es auch Spearman und Kendell Korrelationen 384 00:20:15,990 --> 00:20:19,530 was sind einige Vielzahl von Rangordnung Korrelation. 385 00:20:19,530 --> 00:20:23,600 Nun, sie nicht Produkt berechnen müssen Momente zwischen den Vektoren selbst, 386 00:20:23,600 --> 00:20:28,511 aber der Rangordnungen des Vektors. 387 00:20:28,511 --> 00:20:29,510 Das werde ich später erklären. 388 00:20:29,510 --> 00:20:30,120 >> ZIELGRUPPE: Kurze Frage 389 00:20:30,120 --> 00:20:30,360 >> CONNER HARRIS: Sicher. 390 00:20:30,360 --> 00:20:33,151 >> ZIELGRUPPE: Also, wenn Sie die Berechnung sind für die einfachen Korrelationen zu tun 391 00:20:33,151 --> 00:20:37,655 Sie gehen davon aus, dass es eine statistische Bedeutung für die Korrelation? 392 00:20:37,655 --> 00:20:39,030 CONNER HARRIS: Sie haben nicht zu. 393 00:20:39,030 --> 00:20:41,840 394 00:20:41,840 --> 00:20:43,960 Ein Film ist im Grunde nur eine Maschine. 395 00:20:43,960 --> 00:20:47,690 Es wird in zwei Dinge und es wird ausspucken 396 00:20:47,690 --> 00:20:49,770 Koeffizienten für die am besten passende Linie. 397 00:20:49,770 --> 00:20:52,310 Er berichtet auch Standard- Fehler auf diesen Koeffizienten. 398 00:20:52,310 --> 00:20:55,865 Und es wird Ihnen sagen, wie ist das Intercept statistisch signifikant 399 00:20:55,865 --> 00:20:56,740 oder Differenz von 0. 400 00:20:56,740 --> 00:20:59,400 Ist die Steigung der besten Anpassungslinie statistisch 401 00:20:59,400 --> 00:21:01,510 von Null verschieden ist, und so weiter. 402 00:21:01,510 --> 00:21:06,260 So dass es nichts wird davon ausgegangen, ich glaube, ist am besten Antwort auf Ihre Frage. 403 00:21:06,260 --> 00:21:07,410 OK. 404 00:21:07,410 --> 00:21:14,650 >> Plotting-- so der Hauptgrund, sollten Sie R verwenden, wie multilineare Regression. 405 00:21:14,650 --> 00:21:17,320 Grundsätzlich kann jede Sprache hat einige Möglichkeiten dafür. 406 00:21:17,320 --> 00:21:21,365 Und ehrlich gesagt R Syntax für Regression ist ein bisschen obskur. 407 00:21:21,365 --> 00:21:22,990 Aber Plotten ist, wo es wirklich glänzt. 408 00:21:22,990 --> 00:21:28,090 >> Das Arbeitspferd Funktion Grundstück und es dauert zwei Vektoren x und y. 409 00:21:28,090 --> 00:21:33,010 Und dann steht die Ellipsen für eine sehr große Anzahl von optionalen Argumente, 410 00:21:33,010 --> 00:21:39,190 steuern alles von Titel zu Farben von verschiedenen Leitungen oder mehreren Stellen, 411 00:21:39,190 --> 00:21:40,200 auf die Art der Handlung. 412 00:21:40,200 --> 00:21:42,250 Sie können Streu haben Grundstücke oder Liniendiagramme. 413 00:21:42,250 --> 00:21:47,900 414 00:21:47,900 --> 00:21:49,710 >> [Unverständlich] 2 Vektoren der gleichen Länge. 415 00:21:49,710 --> 00:21:53,780 Sie können diese mit voraus legen Datenrahmen in Ihrem Skript. 416 00:21:53,780 --> 00:22:01,220 Und das wird Ihnen nur Spalte verwenden Überschriften statt der getrennten Vektoren. 417 00:22:01,220 --> 00:22:05,410 Sie können geeignetsten Geraden und lokale hinzufügen Regressionskurven zu Ihrem Diagramm. 418 00:22:05,410 --> 00:22:09,390 >> Diese Befehle aufgeführt hier, ab Zeile und Zeilen, 419 00:22:09,390 --> 00:22:11,640 standardmäßig diesen erhalten in PopUp Fenster geschrieben 420 00:22:11,640 --> 00:22:15,560 da angenommen wird, dass Sie R interaktiv sind. 421 00:22:15,560 --> 00:22:17,310 Wenn Sie nicht können schreiben zwei Dateien, 422 00:22:17,310 --> 00:22:21,600 sind in wirklich jedem Format Sie möchten. 423 00:22:21,600 --> 00:22:25,410 Sorry, ich habe einen Tippfehler Ich habe gerade realisiert. 424 00:22:25,410 --> 00:22:30,887 425 00:22:30,887 --> 00:22:32,720 Wenn Sie öffnen möchten weitere graphische Gerät 426 00:22:32,720 --> 00:22:39,200 Sie können diese Funktion aufgerufen PNG oder verwenden JPEG oder viele andere Bildformate. 427 00:22:39,200 --> 00:22:42,319 Und Sie können Diagramme zu schreiben Was auch immer Dateinamen angeben. 428 00:22:42,319 --> 00:22:45,110 So brechen Sie, dass Sie use-- Ich habe nicht in der slide-- schreibe 429 00:22:45,110 --> 00:22:49,650 aber es gibt eine Funktion namens dev dot off, dass keine Argumente. 430 00:22:49,650 --> 00:22:51,517 >> Dann gibt es Einrichtungen für 3D-Plot 431 00:22:51,517 --> 00:22:53,350 und für die Kontur Plotten wenn Sie machen wollen 432 00:22:53,350 --> 00:22:55,700 Diagramme von zwei unabhängigen Variablen. 433 00:22:55,700 --> 00:22:57,150 Ich werde jetzt nicht in diese zu bekommen. 434 00:22:57,150 --> 00:22:59,130 >> Es gibt auch einige Einrichtungen für Animation 435 00:22:59,130 --> 00:23:01,300 das sind in der Regel von Dritten betrieben. 436 00:23:01,300 --> 00:23:06,330 Ich habe Animationen mit R Graphen durchgeführt, aber ich habe nicht diese Dritten verwendet 437 00:23:06,330 --> 00:23:06,940 Bibliotheken. 438 00:23:06,940 --> 00:23:09,929 So kann ich nicht wirklich bezeugen, um wie gut sie sind. 439 00:23:09,929 --> 00:23:12,220 Was ich empfehlen, wenn Sie wollen, Animationen mit R machen 440 00:23:12,220 --> 00:23:16,480 wird Sie können schreiben, alle Die Rahmen für die Animationen 441 00:23:16,480 --> 00:23:18,470 und dann können Sie eine verwenden können Dritter program-- 442 00:23:18,470 --> 00:23:23,630 typische Werte sind FFmpeg genannt oder ImageMagick-- zum Aufnähen 443 00:23:23,630 --> 00:23:26,540 alle Ihre Bilder in eine Animation. 444 00:23:26,540 --> 00:23:28,380 >> Also Zeit für die Demo. 445 00:23:28,380 --> 00:23:31,030 446 00:23:31,030 --> 00:23:37,189 Also, wenn Sie mit jeder Unix bist wie System welche Linux BSD ist aber BSD verwendet. 447 00:23:37,189 --> 00:23:39,730 OS X ein Terminal-Fenster zu öffnen, und Typ R an der Eingabeaufforderung. 448 00:23:39,730 --> 00:23:42,820 Wenn Sie R-Studio haben oder dergleichen, die auch funktioniert. 449 00:23:42,820 --> 00:23:46,270 Für Windows-Benutzer sollten Sie sein, in der Lage, R im Startmenü zu finden. 450 00:23:46,270 --> 00:23:50,390 Es sollte etwas genannt werden wie R x 64 3-Punkt-was auch immer. 451 00:23:50,390 --> 00:23:53,110 Öffnen Sie, dass dort oben. 452 00:23:53,110 --> 00:23:58,850 >> So, jetzt lassen Sie mich nur Öffnen Sie ein Terminalfenster. 453 00:23:58,850 --> 00:24:02,562 Alles klar, suchen. 454 00:24:02,562 --> 00:24:03,520 ZIELGRUPPE: Befehlsraum 455 00:24:03,520 --> 00:24:06,675 CONNER HARRIS: Befehl-Raum, ich danke Ihnen. 456 00:24:06,675 --> 00:24:10,030 Ich weiß nicht normalerweise verwenden Macs. 457 00:24:10,030 --> 00:24:13,310 Terminal, zeigen neuen Fenster. 458 00:24:13,310 --> 00:24:18,120 Neue Fenster-Einstellungen Grund, R. So erhalten sollten 459 00:24:18,120 --> 00:24:22,230 eine willkommene Nachricht, so etwas wie dieses. 460 00:24:22,230 --> 00:24:31,060 >> Also ich bin mit R interaktiv. 461 00:24:31,060 --> 00:24:32,719 Sie können auch R-Skripte natürlich schreiben. 462 00:24:32,719 --> 00:24:34,510 Grundsätzlich Skripte ausführen genau die gleiche Weise wie 463 00:24:34,510 --> 00:24:40,250 wenn Sie vor dem Computer sitzt wurden Eingabe in jeder Zeile ein zu einer Zeit. 464 00:24:40,250 --> 00:24:42,660 Also lassen Sie uns beginnen, indem Sie einen Vektor. 465 00:24:42,660 --> 00:24:46,230 Ein Pfeil C 1, 2. 466 00:24:46,230 --> 00:24:49,400 1, 2, 4. 467 00:24:49,400 --> 00:24:50,050 OK sicher. 468 00:24:50,050 --> 00:24:51,630 Ich kann die Schriftgröße vergrößern. 469 00:24:51,630 --> 00:24:53,030 >> ZIELGRUPPE: Befehl-Plus 470 00:24:53,030 --> 00:24:53,650 >> CONNER HARRIS: Befehl-Plus. 471 00:24:53,650 --> 00:24:54,191 Befehl-Plus. 472 00:24:54,191 --> 00:24:57,610 473 00:24:57,610 --> 00:25:00,370 In Ordnung, wie das? 474 00:25:00,370 --> 00:25:00,870 Gut? 475 00:25:00,870 --> 00:25:01,551 OK. 476 00:25:01,551 --> 00:25:03,300 Also lassen Sie uns beginnen, indem Deklaration einer Vektorliste. 477 00:25:03,300 --> 00:25:08,710 Führen Sie eine, Pfeil, C 1,2,4. 478 00:25:08,710 --> 00:25:11,181 Wir können sehen, ein. 479 00:25:11,181 --> 00:25:12,680 Nicht über die Halterung dort kümmern. 480 00:25:12,680 --> 00:25:18,590 Die Halterungen sind also, wenn Sie ausdrucken sehr lange Arrays, können wir, wo Sie sind. 481 00:25:18,590 --> 00:25:26,987 Ein Beispiel wäre, wenn ich wollen einfach nur Bereich 2-200. 482 00:25:26,987 --> 00:25:28,820 Wenn ich gedruckte einen sehr Lang Array bilden die Klammern 483 00:25:28,820 --> 00:25:31,060 werden, nur damit ich mithalten kann verfolgen, welche Index 484 00:25:31,060 --> 00:25:33,250 wir sind auf, wenn ich suche durch dieses visuell. 485 00:25:33,250 --> 00:25:36,570 486 00:25:36,570 --> 00:25:38,280 So jedenfalls, haben wir ein. 487 00:25:38,280 --> 00:25:43,326 >> Also sagte ich, bevor die Arrays zu interagieren sehr schön mit, zum Beispiel, 488 00:25:43,326 --> 00:25:44,450 unäre Operationen wie diese. 489 00:25:44,450 --> 00:25:46,500 Also, was Sie denken, ich werde wenn ich ein plus 1 geben? 490 00:25:46,500 --> 00:25:49,630 491 00:25:49,630 --> 00:25:51,140 Ja. 492 00:25:51,140 --> 00:25:54,250 Richtig, jetzt werde ich machen Diese verschiedenen Arrays. 493 00:25:54,250 --> 00:26:01,650 Nehmen wir an, b c 20,40, 80. 494 00:26:01,650 --> 00:26:03,400 Also, was denkst du dieser Befehl zu tun? 495 00:26:03,400 --> 00:26:09,962 496 00:26:09,962 --> 00:26:10,670 Fügen Sie die Elemente. 497 00:26:10,670 --> 00:26:14,950 Und so im Grunde das ist, was es tut. 498 00:26:14,950 --> 00:26:16,740 Also das ist sehr praktisch. 499 00:26:16,740 --> 00:26:23,800 Also habe ich, wie ich zu tun. c ist, sagen wir mal, 6 mal 1 bis 10. 500 00:26:23,800 --> 00:26:26,789 501 00:26:26,789 --> 00:26:28,830 Also, was tun, ich will sehen, enthalten, denken Sie? 502 00:26:28,830 --> 00:26:37,110 503 00:26:37,110 --> 00:26:38,110 So dass alle ein Vielfaches von sechs. 504 00:26:38,110 --> 00:26:42,170 Nun, was glauben Sie, passiert, wenn ich das tun? 505 00:26:42,170 --> 00:26:48,090 Ich werde diese ein wenig klarer, c, c zu machen. 506 00:26:48,090 --> 00:26:50,365 Also, was passiert, sind Sie denke, wenn ich dies tun? 507 00:26:50,365 --> 00:26:51,488 a plus c. 508 00:26:51,488 --> 00:26:55,550 509 00:26:55,550 --> 00:26:56,050 [UNVERSTÄNDLICH] 510 00:26:56,050 --> 00:26:58,552 511 00:26:58,552 --> 00:27:02,350 >> ZIELGRUPPE: Entweder ein Fehler oder es fügt nur die ersten drei Elemente. 512 00:27:02,350 --> 00:27:04,510 >> CONNER HARRIS: Nicht ganz. 513 00:27:04,510 --> 00:27:05,522 Dies ist, was wir bekamen. 514 00:27:05,522 --> 00:27:08,910 Was geschieht, ist eine kürzere Array, a, habe radelte. 515 00:27:08,910 --> 00:27:13,990 Also haben wir 124, 124, 124. 516 00:27:13,990 --> 00:27:15,710 Ja. 517 00:27:15,710 --> 00:27:18,940 Und im Grunde, die Sie anzeigen können dieses Verhalten vor, a plus 1, 518 00:27:18,940 --> 00:27:22,190 als Unterklasse dieses Verhalten, bei dem die kürzeste Array ist nur die Nummer 519 00:27:22,190 --> 00:27:25,410 1, die eine einem Elementarray ist. 520 00:27:25,410 --> 00:27:27,740 Ich habe gerade sagen vector alle die Zeit anstelle von Array, 521 00:27:27,740 --> 00:27:30,290 was die r, denn das ist Dokumentation der Regel nicht. 522 00:27:30,290 --> 00:27:33,070 Es ist eine tief verwurzelte c Gewohnheit. 523 00:27:33,070 --> 00:27:37,590 >> OK, und so haben wir nun dieses Array. 524 00:27:37,590 --> 00:27:38,830 So haben wir dieses Array, c. 525 00:27:38,830 --> 00:27:41,380 Wir können zusammenfass erhalten Statistiken über c, Zusammenfassung c. 526 00:27:41,380 --> 00:27:46,920 527 00:27:46,920 --> 00:27:48,280 Und das ist schön. 528 00:27:48,280 --> 00:27:51,070 529 00:27:51,070 --> 00:27:52,670 So, jetzt lassen Sie uns einige Dinge Matrix. 530 00:27:52,670 --> 00:27:56,160 Nehmen wir an, m ist eine Matrix. 531 00:27:56,160 --> 00:27:57,780 Machen wir es ein drei mal drei ein. 532 00:27:57,780 --> 00:28:01,630 So nrows gleich 3 ist, und ncols gleich 3 ist. 533 00:28:01,630 --> 00:28:04,190 534 00:28:04,190 --> 00:28:10,710 Und für die Daten do-- lassen Sie so was glauben Sie, wird dies jetzt tun? 535 00:28:10,710 --> 00:28:15,310 536 00:28:15,310 --> 00:28:16,580 >> Richtig, es ist der nächste. 537 00:28:16,580 --> 00:28:17,970 Es ist nrow und nColumn. 538 00:28:17,970 --> 00:28:22,164 539 00:28:22,164 --> 00:28:24,580 Also, was ich getan habe, ist ich habe erklärte ein drei mal drei Matrix- 540 00:28:24,580 --> 00:28:26,950 und ich habe in einem Neun-Element-Array übergeben. 541 00:28:26,950 --> 00:28:30,530 So Logarithmus alle Elemente eins bis neun. 542 00:28:30,530 --> 00:28:33,400 543 00:28:33,400 --> 00:28:37,285 Und all diese Werte zu füllen up der array-- leid? 544 00:28:37,285 --> 00:28:38,660 Publikum: Das sind Basis 10 Protokolle? 545 00:28:38,660 --> 00:28:41,284 CONNER HARRIS: Nein, log natürlichen Logarithmus, so Basis e. 546 00:28:41,284 --> 00:28:44,886 547 00:28:44,886 --> 00:28:47,010 Ja, wenn man wollte Basis 10 log, ich denke, man müsste 548 00:28:47,010 --> 00:28:51,620 um sich anzumelden, was auch immer, von log 10 unterteilt. 549 00:28:51,620 --> 00:28:56,750 Und so werden die Daten der [unverständlich] nur füllt das Array, also von oben nach unten, 550 00:28:56,750 --> 00:28:59,490 dann links nach rechts. 551 00:28:59,490 --> 00:29:06,890 Und wenn Sie eine andere tun wollte, Array, sagen wir n-Matrix. 552 00:29:06,890 --> 00:29:10,317 Lassen Sie uns, ich weiß nicht, 2-13. 553 00:29:10,317 --> 00:29:11,900 Oder ich werde etwas Interessanteres zu tun. 554 00:29:11,900 --> 00:29:13,770 Ich werde tun, 2 bis 4. 555 00:29:13,770 --> 00:29:15,780 nrow ist gleich, sagen wir, 3. 556 00:29:15,780 --> 00:29:18,992 NcoI gleich 4. 557 00:29:18,992 --> 00:29:20,360 n. 558 00:29:20,360 --> 00:29:22,090 Also haben wir diese einsehen. 559 00:29:22,090 --> 00:29:26,130 >> Und jetzt, wenn wir diese zu multiplizieren möchten, wir würden n Prozent Zeiten Prozent zu tun, 560 00:29:26,130 --> 00:29:27,680 denn das ist n. 561 00:29:27,680 --> 00:29:30,234 562 00:29:30,234 --> 00:29:31,400 Und wir haben Matrix Produkte. 563 00:29:31,400 --> 00:29:33,970 564 00:29:33,970 --> 00:29:37,810 Durch diese Art und Weise haben Sie gesehen, wie Als ich erklärte, n, die 2 bis 4 565 00:29:37,810 --> 00:29:43,570 vector habe, bis radelte es füllte alle n? 566 00:29:43,570 --> 00:29:45,710 Wenn Sie nehmen wollte, Eigenwertzerlegung, 567 00:29:45,710 --> 00:29:46,960 das ist etwas, was wir sehr leicht tun können. 568 00:29:46,960 --> 00:29:47,709 Wir können eigen n zu tun. 569 00:29:47,709 --> 00:29:52,290 570 00:29:52,290 --> 00:29:54,600 Und dies ist unsere erste Begegnung mit einer Liste. 571 00:29:54,600 --> 00:29:57,000 >> So eigen n ist eine Liste mit zwei Schlüsseln. 572 00:29:57,000 --> 00:29:58,430 Werte, die hier diesem Array. 573 00:29:58,430 --> 00:30:01,030 Und Vektoren, die in diesem Array ist hier. 574 00:30:01,030 --> 00:30:08,240 Also, wenn Sie extrahieren wollte, sagen, das dritte Spalte 575 00:30:08,240 --> 00:30:13,080 von der Eigenmatrix, weil die Eigenvektoren Spaltenvektoren sind. 576 00:30:13,080 --> 00:30:24,400 So können wir vec eigen n Dollarzeichen zu tun Vektoren, Komma 3, der [unverständlich]. 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 Ist, dass, wie man erwarten könnte. 580 00:30:34,100 --> 00:30:39,210 >> Dann sage n mal Prozent Zeiten vec. 581 00:30:39,210 --> 00:30:42,610 582 00:30:42,610 --> 00:30:48,320 Also hier das Ergebnis sieht so aus, wenn wir die dritte Eigenwert hier, 583 00:30:48,320 --> 00:30:50,390 das entspricht mit die dritte Eigenvektor. 584 00:30:50,390 --> 00:30:53,190 Es alles multipliziert gerade Diese Eigenvektor, komponentenweise, 585 00:30:53,190 --> 00:30:53,990 von der Eigenwert ist. 586 00:30:53,990 --> 00:30:57,760 Und das ist das, was wir erwarten würden, weil das, was Eigenwerte sind. 587 00:30:57,760 --> 00:31:00,890 Hat hier jemand nicht genommen linearen Algebra? 588 00:31:00,890 --> 00:31:02,530 Ein paar Leute, OK. 589 00:31:02,530 --> 00:31:04,030 Schalten Sie einfach Ihr Gehirn aus für ein bisschen. 590 00:31:04,030 --> 00:31:07,490 591 00:31:07,490 --> 00:31:20,720 Und in der Tat, wenn wir eigen n Dollar-Zeichen-Werte 3 mal vec, 592 00:31:20,720 --> 00:31:21,810 und Sie erhalten die gleiche Sache. 593 00:31:21,810 --> 00:31:24,726 Es ist anders als eine Zeile formatiert Vektor anstelle eines Spaltenvektors, 594 00:31:24,726 --> 00:31:25,640 aber große Sache. 595 00:31:25,640 --> 00:31:29,430 596 00:31:29,430 --> 00:31:35,170 Und so, das sind im Grunde die schöne Dinge, die wir tun können, mit Matrizen, 597 00:31:35,170 --> 00:31:36,489 gezeigt Listen. 598 00:31:36,489 --> 00:31:39,030 Ich sollte das schöne zeigen Dinge über Funktionen. 599 00:31:39,030 --> 00:31:41,750 >> Lassen Sie uns also sagen-- [unverständlich] Funktion Aufruf let 600 00:31:41,750 --> 00:31:51,960 es func gegen Funktion n n squared-- tatsächlich, das ist nicht wirklich das beste. 601 00:31:51,960 --> 00:31:55,632 a, b, a squared plus b. 602 00:31:55,632 --> 00:31:58,547 603 00:31:58,547 --> 00:32:00,380 So eine Sache, über Funktionen wiederum ist sie 604 00:32:00,380 --> 00:32:01,963 brauchen keine explizite Rückrechnung. 605 00:32:01,963 --> 00:32:04,250 So können Sie die just-- letzte Aussage bewertet 606 00:32:04,250 --> 00:32:07,502 wird die Anweisung zurückgegeben werden, oder der Wert zurückgegeben. 607 00:32:07,502 --> 00:32:10,460 Also in diesem Fall, wir sind nur die Bewertung eine Anweisung, ein Quadrat plus b. 608 00:32:10,460 --> 00:32:12,043 Das wird die Standardrückgabewert sein. 609 00:32:12,043 --> 00:32:14,530 Es schadet nie, legte in Rückgabewerte explizit, 610 00:32:14,530 --> 00:32:16,880 vor allem, wenn Sie mit einem zu tun Funktion sehr komplizierte Logik 611 00:32:16,880 --> 00:32:17,380 fließen. 612 00:32:17,380 --> 00:32:18,450 Aber Sie brauchen sie nicht. 613 00:32:18,450 --> 00:32:24,890 So, jetzt können wir func 5, 1 zu tun, und Das ist im Grunde, was man erwarten würde. 614 00:32:24,890 --> 00:32:29,146 615 00:32:29,146 --> 00:32:31,270 Etwas anderes, was wir tun können, können wir tatsächlich tun func b 616 00:32:31,270 --> 00:32:33,260 gleich 1 ist, a gleich 5 ist. 617 00:32:33,260 --> 00:32:36,870 618 00:32:36,870 --> 00:32:40,770 Also, wenn wir hier angeben, welche Zahl, welchem ​​Rechtsgrund, auf die Argumentation 619 00:32:40,770 --> 00:32:44,680 in der Funktion, können wir in der Umgebung von Flip Diese Werte, wo immer wir wollen. 620 00:32:44,680 --> 00:32:48,405 >> Publikum: Gibt es einen Grund um es zu schreiben, mit dem b 621 00:32:48,405 --> 00:32:52,404 ist gleich im Gegensatz zu nur mit die Zahlen und das Komma? 622 00:32:52,404 --> 00:32:54,820 CONNER HARRIS: Ja, in der Regel tun, wenn Sie Funktionen haben 623 00:32:54,820 --> 00:32:58,540 mit einer Menge von Argumenten. 624 00:32:58,540 --> 00:33:00,690 Das mag oft wie sein Fahnen aus, die du nur 625 00:33:00,690 --> 00:33:03,130 wollen in seltenen Fällen zu verwenden. 626 00:33:03,130 --> 00:33:06,740 Und auf diese Weise können Sie only-- kann auf die spezifischen Argumente beziehen 627 00:33:06,740 --> 00:33:09,110 dass Sie verwenden möchten, Nicht-Standardwerte für, 628 00:33:09,110 --> 00:33:14,470 und Sie müssen nicht zu schreiben, ein Bündel von Flags gleich falschen ihnen nach. 629 00:33:14,470 --> 00:33:19,710 Oder kann ich das wieder mit zu schreiben ein Standardwert wie b gleich 2 ist. 630 00:33:19,710 --> 00:33:26,289 Und dann konnte ich f func zu tun, Ich werde 4, 1 dieses Mal zu tun. 631 00:33:26,289 --> 00:33:28,580 Und 17, die 4 quadriert plus 1, als Sie vielleicht erwarten. 632 00:33:28,580 --> 00:33:34,290 >> Aber ich könnte auch einfach nennen dies mit func 4, 633 00:33:34,290 --> 00:33:36,970 und Ich werde 18, weil Ich glaube nicht, geben Sie b. 634 00:33:36,970 --> 00:33:38,550 So b erhält den Standardwert von 2. 635 00:33:38,550 --> 00:33:41,700 636 00:33:41,700 --> 00:33:47,200 >> OK, so jetzt, wenn Sie folgenden zusammen mit der Demo, 637 00:33:47,200 --> 00:33:51,010 Geben Sie die folgende Zeile zu Ihrer Verfügung prompt und sehen, was kommt. 638 00:33:51,010 --> 00:33:52,090 Eigentlich glaube ich nicht. 639 00:33:52,090 --> 00:33:52,590 Geben Sie diese. 640 00:33:52,590 --> 00:33:57,780 641 00:33:57,780 --> 00:34:01,000 Sie sollten etwas wie diese zu erhalten. 642 00:34:01,000 --> 00:34:04,780 So mtcars wird ein in der Daten gebaut für diese Demonstration gesetzt 643 00:34:04,780 --> 00:34:13,550 Zwecke, die kommt mit-- das kommt in der Standardeinstellung mit r Verteilung. 644 00:34:13,550 --> 00:34:19,211 Dies ist eine Zusammenstellung von Statistiken aus a 1974 Ausgabe der Zeitschrift Motor Trend ist 645 00:34:19,211 --> 00:34:20,710 auf einer Reihe von verschiedenen Fahrzeugmodellen. 646 00:34:20,710 --> 00:34:28,270 >> Also gibt es Meilen pro Gallone, cylinders-- Ich vergesse, was disp ist-- PS. 647 00:34:28,270 --> 00:34:31,610 648 00:34:31,610 --> 00:34:32,420 Wahrscheinlich. 649 00:34:32,420 --> 00:34:36,920 Wenn Sie nur Google MT Autos, dann eines der ersten Ergebnisse 650 00:34:36,920 --> 00:34:38,730 aus der sein offizielle r Dokumentation 651 00:34:38,730 --> 00:34:41,080 und es wird erklärt, alle diese Datenfelder. 652 00:34:41,080 --> 00:34:47,020 So Gewicht ist-- Gew ist Gewicht des Autos in Tonnen. 653 00:34:47,020 --> 00:34:48,880 Q s ist die viertel Meile Zeit. 654 00:34:48,880 --> 00:34:52,409 655 00:34:52,409 --> 00:34:55,850 So, jetzt können wir einige lustige Dinge zu tun über MT Autos ist ein Datenfeld. 656 00:34:55,850 --> 00:35:01,640 >> So können wir Dinge tun wie Zeilennamen, mt Autos. 657 00:35:01,640 --> 00:35:05,490 Und dies ist eine Liste aller Zeilen in der Datensatz, die Namen von Autos sind. 658 00:35:05,490 --> 00:35:10,780 Wir können COLNAMES, mt Autos tun. 659 00:35:10,780 --> 00:35:15,500 Wenn Sie mt Autos zu tun, Unter numerischen Index, wie 2. 660 00:35:15,500 --> 00:35:18,177 erhalten wir die zweite Spalte aus Diese, die Zylinder wären. 661 00:35:18,177 --> 00:35:19,370 >> Publikum: Was hast du getan? 662 00:35:19,370 --> 00:35:21,570 >> CONNER HARRIS: Ich tippte mt Autos, Halterungen e, 663 00:35:21,570 --> 00:35:24,180 das gab mir die zweite Spalte von mt Autos. 664 00:35:24,180 --> 00:35:34,501 665 00:35:34,501 --> 00:35:38,110 Oder wenn wir eine Reihe, I-Typ kann mtcars Komma 2, zum Beispiel. 666 00:35:38,110 --> 00:35:41,850 667 00:35:41,850 --> 00:35:46,390 Andere Runde 2 Komma, so. 668 00:35:46,390 --> 00:35:48,880 Und das geht in Ihrer Reihe. 669 00:35:48,880 --> 00:35:54,680 Diese hier haben Sie nur einen Spalte, aber Spalte als Vektor. 670 00:35:54,680 --> 00:36:04,634 671 00:36:04,634 --> 00:36:06,425 Ich habe gerade jetzt wurde mir klar, vergessen zu zeigen, 672 00:36:06,425 --> 00:36:09,150 ein paar coole Dinge über Vektoren dass Sie mit Indizes tun können. 673 00:36:09,150 --> 00:36:10,480 Lassen Sie mich also, dass gerade jetzt zu tun. 674 00:36:10,480 --> 00:36:17,130 Lassen Sie uns so tun, c gets-- setzen Diese auf pause-- 2 mal 1 bis 10. 675 00:36:17,130 --> 00:36:21,360 So c ist gerade dabei zu sein der Vektor 2 bis 20. 676 00:36:21,360 --> 00:36:24,640 Ich kann Elemente wie diese zu nehmen, c2. 677 00:36:24,640 --> 00:36:30,942 Ich kann in einem Vektor übergeben wie diese, C- mich lassen 678 00:36:30,942 --> 00:36:34,470 benutzen anderen Namen als c, wie vec c. 679 00:36:34,470 --> 00:36:37,591 680 00:36:37,591 --> 00:36:39,340 Grundsätzlich mache ich diese, so dass Sie nicht bekommen, 681 00:36:39,340 --> 00:36:45,010 zwischen C als verwirrt Vektorkonstruktion Funktion, 682 00:36:45,010 --> 00:36:48,800 und dann c als Variablenname. 683 00:36:48,800 --> 00:36:53,120 Vec Klammern c 4, 5, 7. 684 00:36:53,120 --> 00:36:56,540 Dies werde mich aus dem vierten bekommen, fünften, und sieben Elemente des Arrays. 685 00:36:56,540 --> 00:37:01,740 Ich kann vec zu tun, in einer negativen setzen Index, wie negativ 4. 686 00:37:01,740 --> 00:37:06,500 Das wird mir mit zu diesem das vierte Element entfernt wird. 687 00:37:06,500 --> 00:37:10,140 Dann, wenn ich, um Scheiben machen wollte, Ich kann vec 2 bis 6 zu tun. 688 00:37:10,140 --> 00:37:15,480 2 Doppelpunkt 6 ist nur ein weiterer Vektor, der 2, 3, 4, 5, 6. 689 00:37:15,480 --> 00:37:18,230 Spuckt, dass. 690 00:37:18,230 --> 00:37:20,770 >> So jedenfalls zurück zu mt Autos. 691 00:37:20,770 --> 00:37:26,650 692 00:37:26,650 --> 00:37:28,450 Lassen Sie uns so tun, einige Regressionen. 693 00:37:28,450 --> 00:37:34,240 Lassen Sie uns sagen Modell gets-- uns gelassen linear regress-- Ich weiß nicht. 694 00:37:34,240 --> 00:37:41,780 Lassen Sie uns zunächst keine befestigen mtcars, natürlich. 695 00:37:41,780 --> 00:37:44,870 696 00:37:44,870 --> 00:38:00,010 So [unverständlich] Modell lm, lass uns zurückbilden Meilen pro Gallone auf Tilde Gewicht. 697 00:38:00,010 --> 00:38:03,300 Und dann Datenrahmen mtcars. 698 00:38:03,300 --> 00:38:06,830 So Zusammenfassung Modell. 699 00:38:06,830 --> 00:38:12,900 700 00:38:12,900 --> 00:38:15,595 >> OK, so sieht das ein bisschen kompliziert. 701 00:38:15,595 --> 00:38:19,380 Aber im Grunde, da, wenn wir versuchen, Meilen pro Gallone zum Ausdruck 702 00:38:19,380 --> 00:38:23,970 als eine lineare Funktion des Gewichts, dann haben wir diese Linie hier, 703 00:38:23,970 --> 00:38:28,730 die Abschnitte am 37.28. 704 00:38:28,730 --> 00:38:33,830 37.28 würde die theoretischen Meilen sein pro Gallone ein Auto, das Null wiegt. 705 00:38:33,830 --> 00:38:41,210 Und dann für jede weitere Tonne, Sie etwa fünf Meilen pro Gallone zu klopfen 706 00:38:41,210 --> 00:38:42,440 off davon. 707 00:38:42,440 --> 00:38:45,120 Beide Koeffizienten Sie können, Standardfehler dort zu sehen. 708 00:38:45,120 --> 00:38:47,870 Und sie sind sehr sind statistisch signifikant. 709 00:38:47,870 --> 00:38:55,740 >> So können wir ganz sicher zu sein, 1 E 10 mit der negativen 10. 710 00:38:55,740 --> 00:38:59,510 Also 1 mal etwas mit dem negativen 10, dass, wenn Sie eine schwerere Auto zu machen, 711 00:38:59,510 --> 00:39:01,440 es wird noch schlimmer Meilen pro Gallone. 712 00:39:01,440 --> 00:39:04,940 713 00:39:04,940 --> 00:39:07,250 Oder wir können eine andere Modell zu testen. 714 00:39:07,250 --> 00:39:09,230 Dergleichen anstelle Rückschritte dieses auf Gewicht, 715 00:39:09,230 --> 00:39:12,600 Lassen Sie uns zurückbilden es auf Protokoll von Gewicht, weil vielleicht das effektive Gewicht 716 00:39:12,600 --> 00:39:15,690 auf Laufleistung ist irgendwie nicht linear. 717 00:39:15,690 --> 00:39:18,540 >> Dies gab uns eine r von 0,7528 zum Quadrat. 718 00:39:18,540 --> 00:39:19,610 Also lassen Sie uns versuchen, diese. 719 00:39:19,610 --> 00:39:21,485 Dieses Mal machen wir eine andere Variable, auch. 720 00:39:21,485 --> 00:39:22,500 Model2. 721 00:39:22,500 --> 00:39:24,800 So Zusammenfassend model2. 722 00:39:24,800 --> 00:39:28,200 723 00:39:28,200 --> 00:39:31,390 In Ordnung, so wieder, wir haben unsere am besten passende Linie hier. 724 00:39:31,390 --> 00:39:36,160 Und dies Zeit-- dies sagen: im Grunde, dass jedes Mal, wenn 725 00:39:36,160 --> 00:39:38,090 erhöhen das Gewicht der ein Auto mit einem Faktor von e 726 00:39:38,090 --> 00:39:40,580 Sie verlieren so viele Meilen pro Gallone. 727 00:39:40,580 --> 00:39:43,210 728 00:39:43,210 --> 00:39:50,326 >> Und so dieses Mal unsere Reststandard Fehler es-- das spielt keine Rolle, wirklich. 729 00:39:50,326 --> 00:39:53,540 Die Reststandardfehler im Grunde nur der Standardfehler 730 00:39:53,540 --> 00:39:57,760 dass Sie, nachdem Sie verlassen haben, nehmen die Trendlinie. 731 00:39:57,760 --> 00:40:02,805 Und unsere r hier im Quadrat ist 0,81, was ein bisschen besser als ist, was 732 00:40:02,805 --> 00:40:07,640 Wir hatten vor, 0,52. 733 00:40:07,640 --> 00:40:09,750 >> Und nun ist hinzuzufügen eine Enttäuschung Begriff auf diese Regression. 734 00:40:09,750 --> 00:40:13,020 Lassen Sie uns also zurückbilden Meilen pro Gallone sowohl auf dem Protokoll der Gewichte 735 00:40:13,020 --> 00:40:21,130 und lassen Sie uns tun, q Meilen, viertel Meile Zeit. 736 00:40:21,130 --> 00:40:26,190 OK, muss er the-- alles in Ordnung, 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-- sorry, was? 740 00:40:35,000 --> 00:40:37,000 Lassen Sie mich diese etwas nennen sonst außer model2. 741 00:40:37,000 --> 00:40:38,000 Lassen Sie mich dieses model3 nennen. 742 00:40:38,000 --> 00:40:40,860 743 00:40:40,860 --> 00:40:42,900 Und so können wir jetzt zusammenfass model3 zu tun. 744 00:40:42,900 --> 00:40:46,850 745 00:40:46,850 --> 00:40:49,100 Und so wieder, das ist im Grunde was Sie vielleicht erwarten. 746 00:40:49,100 --> 00:40:51,750 Sie haben positive abfangen. 747 00:40:51,750 --> 00:40:54,550 Die effektive Steigerung Gewicht negativ. 748 00:40:54,550 --> 00:40:58,490 Und die wirksame Erhöhung viertel Meile Zeit 749 00:40:58,490 --> 00:41:02,420 positiv ist, aber obwohl weniger als Gewicht. 750 00:41:02,420 --> 00:41:06,010 Jetzt intuitiv, können Sie Sinn machen dies damit, denke über den Sportwagen. 751 00:41:06,010 --> 00:41:08,950 Es gibt eine sehr schnelle Beschleunigung, eine sehr kurze viertel Meile Zeiten. 752 00:41:08,950 --> 00:41:13,729 Sie sind auch gehen, um mehr Gas zu verwenden, wohin vernünftigere Autos gehen 753 00:41:13,729 --> 00:41:16,020 langsamer Beschleunigung haben, höhere viertel Meile Zeiten 754 00:41:16,020 --> 00:41:20,890 und verbrauchen weniger Gas ,, so höhere Meilen pro Gallone. 755 00:41:20,890 --> 00:41:21,390 Groß. 756 00:41:21,390 --> 00:41:23,431 Und jetzt ist es Zeit, Plotten etwas wie dieses. 757 00:41:23,431 --> 00:41:27,810 Lassen Sie uns also do-- so kahl Knochen wir tun können plots-- 758 00:41:27,810 --> 00:41:35,280 weil ich diese Daten Rahmen befestigt before-- können wir nur tun, Grundstücke, Gew mpg. 759 00:41:35,280 --> 00:41:38,762 760 00:41:38,762 --> 00:41:39,720 Machen Sie dieses ein bisschen größer. 761 00:41:39,720 --> 00:41:55,050 762 00:41:55,050 --> 00:41:57,350 Dort, im Grunde haben wir einen Streudiagramm, aber die Punkte 763 00:41:57,350 --> 00:41:58,690 sind irgendwie schwer, sich auf diese zu sehen. 764 00:41:58,690 --> 00:42:04,860 765 00:42:04,860 --> 00:42:10,900 >> Ich weiß nicht, was die ohne weiteres erinnern Syntax ist für die Änderung der Grundstücksgrenze. 766 00:42:10,900 --> 00:42:14,100 Also ich denke, das wird eine gute Zeit zu bringen, 767 00:42:14,100 --> 00:42:18,000 es ist ein sehr schönes eingebaute Hilfe Komponenten, Funktionen Hilfe Anführungszeichen Namen. 768 00:42:18,000 --> 00:42:21,690 Wir werden bis im Grunde bringen alles, was Sie möchten. 769 00:42:21,690 --> 00:42:28,010 770 00:42:28,010 --> 00:42:32,730 Ich denke, ich werde tatsächlich tun Typ gleich p für Punkte Parzellen. 771 00:42:32,730 --> 00:42:34,369 Hat das etwas ändern? 772 00:42:34,369 --> 00:42:35,160 Und nein, nicht wirklich. 773 00:42:35,160 --> 00:42:39,160 774 00:42:39,160 --> 00:42:39,660 Gut. 775 00:42:39,660 --> 00:42:46,760 776 00:42:46,760 --> 00:42:49,580 >> Aus irgendeinem Grund, wenn ich das tat auf meinem eigenen Computer eine Weile her, 777 00:42:49,580 --> 00:42:52,080 alle Streupunkte waren viel klarer. 778 00:42:52,080 --> 00:43:06,390 779 00:43:06,390 --> 00:43:13,970 Jedenfalls sind die Scatter Art sichtbar? 780 00:43:13,970 --> 00:43:15,124 Da ist man da. 781 00:43:15,124 --> 00:43:16,165 Einige gibt es, einige gibt. 782 00:43:16,165 --> 00:43:18,860 783 00:43:18,860 --> 00:43:21,185 Sie können eine Art sehen, wie sie, nicht wahr? 784 00:43:21,185 --> 00:43:24,310 Wenn wir also eine Ausgleichsgerade hinzufügen zu dieser Handlung hier, die ein bisschen kahl ist 785 00:43:24,310 --> 00:43:29,290 bones-- lassen Sie mich ein bisschen schöner. 786 00:43:29,290 --> 00:43:38,075 Haupt gleich gegenüber dem Gewichts. 787 00:43:38,075 --> 00:43:46,322 788 00:43:46,322 --> 00:43:49,740 Meilen pro Gallone. 789 00:43:49,740 --> 00:43:53,570 Auch hier können Sie sehen, wie nützlich optionale Argumente sind hier mit auch 790 00:43:53,570 --> 00:43:58,090 nicht mit, um die Dinge in einem setzen bestimmten Reihenfolge mit Tastatur Argumente 791 00:43:58,090 --> 00:44:01,600 wenn Sie Grundstücke, da haben diese nehmen eine Menge von Argumenten. 792 00:44:01,600 --> 00:44:07,490 >> Xlab gleich Gewicht, Gewicht, Tonnen. 793 00:44:07,490 --> 00:44:10,091 794 00:44:10,091 --> 00:44:10,590 Gut. 795 00:44:10,590 --> 00:44:17,340 796 00:44:17,340 --> 00:44:21,480 OK, ja, dieses Gerät ist ein bisschen nervig. 797 00:44:21,480 --> 00:44:30,160 Aber Sie Art von da oben sehen können, es gibt einen Diagrammtitel auf der Seite. 798 00:44:30,160 --> 00:44:35,260 Hier drüben there's-- auf der Unterseite Hier gibt es Achsenbeschriftungen. 799 00:44:35,260 --> 00:44:37,700 Ich erinnere mich nicht ohne weiteres was die Befehle ars-- 800 00:44:37,700 --> 00:44:41,000 Was sind die Funktionen zur Steigerung die Größe dieser Etiketten und Titel, 801 00:44:41,000 --> 00:44:43,110 aber sie sind da. 802 00:44:43,110 --> 00:44:46,625 >> Und so, wenn wir wollen fügen Sie die am besten passende Linie, 803 00:44:46,625 --> 00:44:49,250 wir etwas like-- ich tun haben die Syntax hier oben geschrieben. 804 00:44:49,250 --> 00:44:52,280 805 00:44:52,280 --> 00:45:11,130 So erinnern wir uns nur hinzufügen Modell war mpg, Gewicht, mtcars. 806 00:45:11,130 --> 00:45:16,470 Und so, wenn ich wollte, um eine beste Passform hinzufügen Linie, konnte ich a, b Linienmodell zu tun. 807 00:45:16,470 --> 00:45:18,556 Und Boom, haben wir eine Ausgleichsgerade. 808 00:45:18,556 --> 00:45:19,970 Es ist ein bisschen schwer, wieder zu sehen. 809 00:45:19,970 --> 00:45:22,178 Ich bin ganz traurig über die technologische Schwierigkeiten. 810 00:45:22,178 --> 00:45:25,230 Aber es läuft grundsätzlich oben links nach unten rechts. 811 00:45:25,230 --> 00:45:27,550 >> Und wenn die Waage waren größer, man konnte sehen, 812 00:45:27,550 --> 00:45:31,260 dass der Schnittpunkt ist, was du kannst finden von den Auswertungsstatistiken 813 00:45:31,260 --> 00:45:34,790 wenn Sie Typenübersicht Modell. 814 00:45:34,790 --> 00:45:40,130 OK, so dass ich hoffe, dass jeder bekommt, so etwas wie ein Gefühl dafür, was 815 00:45:40,130 --> 00:45:42,030 R ist, was es ist gut für. 816 00:45:42,030 --> 00:45:45,520 Man könnte viel schöner als Grundstücke zu machen diese auf Ihrer eigenen Zeit, wenn Sie möchten. 817 00:45:45,520 --> 00:45:50,100 818 00:45:50,100 --> 00:45:53,950 >> So ausländischen Funktionsschnittstelle. 819 00:45:53,950 --> 00:46:00,330 Dies ist etwas, das nicht normalerweise im Einführungsvorträge abgedeckt 820 00:46:00,330 --> 00:46:03,560 oder Einführungs alles für r. 821 00:46:03,560 --> 00:46:05,584 Es ist nicht wahrscheinlich, dass Sie gehen, um es brauchen. 822 00:46:05,584 --> 00:46:08,000 Allerdings fand ich es sinnvoll, in meine eigenen Projekte in der Vergangenheit. 823 00:46:08,000 --> 00:46:10,984 Und es ist nicht gut Tutorial für die es online. 824 00:46:10,984 --> 00:46:12,900 Also ich werde einfach eilen Sie alle über diese 825 00:46:12,900 --> 00:46:16,606 und dann bist du frei, zu gehen. 826 00:46:16,606 --> 00:46:18,480 Und so ist die ausländische Funktionsschnittstelle ist es, was 827 00:46:18,480 --> 00:46:23,130 Sie verwenden können, zu rufen, um zu sehen, Funktionen mit einem R. Intern 828 00:46:23,130 --> 00:46:29,850 R ist gebaut auf C R Arithmetik ist einfach C 64-Bit-Fließkomma-Arithmetik, 829 00:46:29,850 --> 00:46:32,852 was ist der Typ double [unverständlich]. 830 00:46:32,852 --> 00:46:35,060 Und möchten Sie vielleicht zu tun dies für eine Reihe von Gründen. 831 00:46:35,060 --> 00:46:39,250 Zum einen ist R interpretiert, ist es nicht nach unten in Maschinencode kompiliert. 832 00:46:39,250 --> 00:46:42,170 So dass Sie schreiben können Sie Ihre inneren Schleifen in C und dann bekommen 833 00:46:42,170 --> 00:46:45,920 der Vorteil der Verwendung R. Wie es ist ein bisschen bequemer als C. 834 00:46:45,920 --> 00:46:48,899 Es hat eine bessere Grafik Einrichtungen und so weiter. 835 00:46:48,899 --> 00:46:51,690 Und während noch in der Lage zu bekommen, Höchstgeschwindigkeit aus den inneren Schleifen, 836 00:46:51,690 --> 00:46:53,650 Das ist, wo Sie es wirklich brauchen. 837 00:46:53,650 --> 00:46:56,330 >> Wiederverwendung vorhandener C-Bibliotheken, das ist auch wichtig. 838 00:46:56,330 --> 00:47:00,320 Wenn Sie etwas C-Bibliothek für wie, Ich weiß nicht, Fourier-Transformationen, 839 00:47:00,320 --> 00:47:05,190 oder einige sehr Archaikum Statistiken Verfahren verwendet 840 00:47:05,190 --> 00:47:09,470 in der Hochenergie-Astrophysik oder so etwas, ich weiß nicht. 841 00:47:09,470 --> 00:47:13,058 Hochenergie-Astrophysik ist nicht einmal ein Think, denke ich. 842 00:47:13,058 --> 00:47:16,480 Sie können jedoch, dass, anstatt zu tun eine native R-Anschluss von ihnen zu schreiben. 843 00:47:16,480 --> 00:47:22,725 Und am the-- wieder, wie wenn Sie schauen in den meisten R Standardbibliotheken, 844 00:47:22,725 --> 00:47:25,600 auf den Einbauten sind die Einbauten gehen, um die Fremd Funktion nutzen 845 00:47:25,600 --> 00:47:26,724 Schnittstelle sehr umfangreich. 846 00:47:26,724 --> 00:47:31,630 Sie werden Dinge wie Fourier haben transformiert oder Berechnen von Korrelations 847 00:47:31,630 --> 00:47:34,890 Koeffizienten in C geschrieben, und sie werden einfach nur R-Wrapper um sie herum. 848 00:47:34,890 --> 00:47:38,230 Die Schnittstelle ist ein etwas schwierig. Ich denke 849 00:47:38,230 --> 00:47:43,750 die Schwierigkeit liegt in einem übertrieben Viele der Befehle finden Sie. 850 00:47:43,750 --> 00:47:46,200 Aber dennoch ist es ein wenig verwirrend. 851 00:47:46,200 --> 00:47:48,650 Und ich habe nicht in der Lage finden Sie ein gutes Tutorial für sie, 852 00:47:48,650 --> 00:47:51,980 so, das ist es jetzt. 853 00:47:51,980 --> 00:47:55,360 Auch diese ganze Segment ist mehr für den späteren Gebrauch auf. 854 00:47:55,360 --> 00:47:57,687 Mach dir keine Sorgen Kopier alles bis jetzt. 855 00:47:57,687 --> 00:48:00,020 So der folgenden Anleitung sind für Unix-ähnliche Systeme, 856 00:48:00,020 --> 00:48:05,150 Linux, BSD, OS X. Ich weiß nicht, Wie das funktioniert auf Windows, 857 00:48:05,150 --> 00:48:08,280 aber bitte nur nicht, tun Sie Ihre Abschlussprojekt auf Windows. 858 00:48:08,280 --> 00:48:10,790 859 00:48:10,790 --> 00:48:12,460 Sie wirklich nicht tun wollen. 860 00:48:12,460 --> 00:48:14,770 Unix ist viel besser Satz up für Casual-Programmierung. 861 00:48:14,770 --> 00:48:19,320 862 00:48:19,320 --> 00:48:21,390 Also, im Grunde fremden Funktionsschnittstelle. 863 00:48:21,390 --> 00:48:24,420 Wenn Sie ein C schreiben wollen Funktion zur Verwendung mit R, 864 00:48:24,420 --> 00:48:27,250 es muss alles nehmen Argumente Zeiger. 865 00:48:27,250 --> 00:48:30,666 >> Also für Einzelwerte, dies bedeutet, dass es auf den Wert zeigte. 866 00:48:30,666 --> 00:48:33,040 Für Arrays, ist dies ein Zeiger auf das erste Element, das 867 00:48:33,040 --> 00:48:36,750 ist das, was Arraynamen tatsächlich bedeuten. 868 00:48:36,750 --> 00:48:40,140 Auch dies ist etwas, das Sie haben sollten ziemlich komplett nach unten, nachdem S. fünf. 869 00:48:40,140 --> 00:48:43,334 Array-Namen sind nur Zeiger zu dem ersten Element, 870 00:48:43,334 --> 00:48:44,750 Die Fließkommatyp ist doppelt. 871 00:48:44,750 --> 00:48:47,310 Und Ihre Funktion muss leer kommen. 872 00:48:47,310 --> 00:48:50,810 Die einzige Möglichkeit, dass er tatsächlich sagen, R, was passiert 873 00:48:50,810 --> 00:48:54,410 ist durch Modifizieren des Speichers, der R gab um es durch die Fremdfunktion 874 00:48:54,410 --> 00:48:54,910 Schnittstelle. 875 00:48:54,910 --> 00:48:58,180 876 00:48:58,180 --> 00:49:00,127 >> Also habe ich das geschrieben Beispiel hier ist das 877 00:49:00,127 --> 00:49:02,460 eine Funktion, die Benutzung berechnet Skalarprodukt zweier Vektoren. 878 00:49:02,460 --> 00:49:05,060 Es nimmt zwei Argumente, vec1, vec2, Welches sind die Vektoren selbst, 879 00:49:05,060 --> 00:49:06,934 und dann n, die eine Länge, weil wieder, 880 00:49:06,934 --> 00:49:12,630 R hat in [unverständlich] errichtet, um herauszufinden, die Länge von Vektoren, aber C nicht. 881 00:49:12,630 --> 00:49:16,182 In C wird Vektoren eine beliebige abgegrenzten Teil des Speichers. 882 00:49:16,182 --> 00:49:17,890 So, wie Sie können Berechnung Punktprodukte 883 00:49:17,890 --> 00:49:23,470 wird nur dieser Parameter aus auf Null und dann durch iterieren 884 00:49:23,470 --> 00:49:28,760 von 1 bis n Star, weil n ist ein Zeiger auf die Länge, 885 00:49:28,760 --> 00:49:32,929 nur etwas hinzufügen Diese out-Parameter. 886 00:49:32,929 --> 00:49:34,970 Und es kann eine gute Übung wenn Sie tun werden 887 00:49:34,970 --> 00:49:37,270 Diese zwei separate C-Funktionen zu schreiben. 888 00:49:37,270 --> 00:49:41,970 Einer von ihnen has-- eines davon nur nimmt die Argumente und die Arten 889 00:49:41,970 --> 00:49:43,970 dass sie gewöhnlich in C liegen 890 00:49:43,970 --> 00:49:47,780 >> So dauert es eine Array Argumente Zeiger. 891 00:49:47,780 --> 00:49:57,090 Aber Einzelwertargumente wie n, es dauert nur als Werte durch Kopieren, 892 00:49:57,090 --> 00:49:57,917 ohne Zeiger. 893 00:49:57,917 --> 00:49:59,750 Und dann tut es nicht [Unverständlich] out-Zeiger. 894 00:49:59,750 --> 00:50:01,290 Und dann kannst du eine andere, im Grunde 895 00:50:01,290 --> 00:50:03,623 Wrapper-Funktion, die im Grunde verarbeitet die Anforderungen 896 00:50:03,623 --> 00:50:07,740 der ausländischen Funktion Schnittstelle für Sie. 897 00:50:07,740 --> 00:50:11,840 >> Die Art, wie Sie dies in R nennen, ist, einmal haben Sie Ihre Funktion in C geschrieben, 898 00:50:11,840 --> 00:50:17,770 Sie cmd shlib R, R geben Befehls Shared Library, 899 00:50:17,770 --> 00:50:20,110 foo Punkt c, oder was auch immer Ihre Dateiname ist, 900 00:50:20,110 --> 00:50:23,020 und das OS Oberfläche nicht in der R-Anschluß. 901 00:50:23,020 --> 00:50:25,200 Und dies wird eine zu erstellen Bibliothek namens foo dot so. 902 00:50:25,200 --> 00:50:28,180 Und dann können Sie diesen in laden unser Skript oder interaktiv 903 00:50:28,180 --> 00:50:32,310 mit Kommando dyn Punktlast. 904 00:50:32,310 --> 00:50:35,720 Dann gibt es eine Funktion in R genannten Punkt c. 905 00:50:35,720 --> 00:50:39,310 >> Dies dauert Argumente, die sind zuerst den Namen der Funktion in C 906 00:50:39,310 --> 00:50:40,970 dass Sie anrufen möchten. 907 00:50:40,970 --> 00:50:43,920 Und dann alle Parameter dieser Funktion, 908 00:50:43,920 --> 00:50:45,420 sie müssen in der richtigen Reihenfolge sein. 909 00:50:45,420 --> 00:50:48,580 Sie müssen diese Art verwenden, Zwang fungiert als ganze Zahl, wie 910 00:50:48,580 --> 00:50:52,050 Doppel, als Zeichen und als logisch. 911 00:50:52,050 --> 00:50:54,710 Und dann, wenn es gibt die Liste, die wiederum ist nur 912 00:50:54,710 --> 00:50:57,550 eine zugehörige Array des Parameternamen und die Werte 913 00:50:57,550 --> 00:51:00,950 nachdem die Funktion ausgeführt werden. 914 00:51:00,950 --> 00:51:08,520 >> Also in diesem Fall, denn dot prod hat Argumente vec1, vec2 und int n, n aus. 915 00:51:08,520 --> 00:51:11,980 Zu Punkt c wir dot prod, der Name der Funktion 916 00:51:11,980 --> 00:51:16,250 wir fordern, vec1, vec2, Typ zwingen. 917 00:51:16,250 --> 00:51:20,060 Die Länge entweder Vektor, Ich entschied mich für nur vec1 willkürlich. 918 00:51:20,060 --> 00:51:25,479 Es wäre robuster zu sagen s Integer min Länge vec1, Länge vec2. 919 00:51:25,479 --> 00:51:27,520 Dann einfach als Doppel-Null, weil wir nicht wirklich 920 00:51:27,520 --> 00:51:29,644 egal, was in der geht out-Parameter, weil wir 921 00:51:29,644 --> 00:51:32,270 wenn er auf jeden Fall Null. 922 00:51:32,270 --> 00:51:37,560 >> Und dann Ergebnisse werden ein sein big zugehörigen Anordnung von im wesentlichen 923 00:51:37,560 --> 00:51:42,090 vec1 ist was auch immer, ist vec2 was auch immer. 924 00:51:42,090 --> 00:51:44,330 Aber wir sind interessiert an aus, so dass wir, dass raus. 925 00:51:44,330 --> 00:51:47,780 Dies ist wiederum ein sehr Spielzeug beispiels eines ausländischen Funktionsschnittstelle. 926 00:51:47,780 --> 00:51:54,160 Aber wenn Sie dot berechnen müssen Produkte des massiven Vektoren in Schleifen, 927 00:51:54,160 --> 00:51:56,960 oder wenn Sie zu tun haben, etwas anderes in einer Schleife, 928 00:51:56,960 --> 00:51:59,850 und Sie nicht möchten, dass auf R verlassen, davon mit einem wenig Overhead tut 929 00:51:59,850 --> 00:52:02,830 hinein gebaut, kann dies sinnvoll sein. 930 00:52:02,830 --> 00:52:05,870 >> Wiederum ist dies in der Regel nicht eine einleitende Thema R. 931 00:52:05,870 --> 00:52:08,571 Es ist nicht sehr gut dokumentiert. 932 00:52:08,571 --> 00:52:11,070 Ich bin gerade darunter, weil Ich fand es nützlich, in der Vergangenheit. 933 00:52:11,070 --> 00:52:13,654 Also, schlechte Praktiken. 934 00:52:13,654 --> 00:52:15,820 Ich erwähnte, dass es eine for-Schleife in der Funktion. 935 00:52:15,820 --> 00:52:21,150 Im Allgemeinen sollten Sie nicht, in die Sprache, die sie nicht verwenden. 936 00:52:21,150 --> 00:52:26,100 Je nachdem, wie R implementiert Iteration intern, kann es langsam sein. 937 00:52:26,100 --> 00:52:28,540 Sie gerade auch hässlich aussehen. 938 00:52:28,540 --> 00:52:32,410 >> R Griffe Vektoren sehr schön, so oft brauchen Sie nicht, es zu benutzen. 939 00:52:32,410 --> 00:52:35,050 940 00:52:35,050 --> 00:52:38,900 Dann können Sie in der Regel ersetzen Sie eine Vektor oft 941 00:52:38,900 --> 00:52:42,490 Mit diesen Funktionen aufgerufen Hoch Bestellfunktionen, Karte, Reduzieren, 942 00:52:42,490 --> 00:52:44,404 Finden oder Filter. 943 00:52:44,404 --> 00:52:46,320 Ich werde nur einige zu geben Beispiele dafür, was diese zu tun. 944 00:52:46,320 --> 00:52:49,957 Karte ist eine Funktion höherer Ordnung, weil dauert es eine Funktion als Argument. 945 00:52:49,957 --> 00:52:52,290 So können Sie es geben, eine Funktion, Sie können es ein Array, 946 00:52:52,290 --> 00:52:54,640 und es wird die Funktion anzuwenden zu jedem Element des Arrays 947 00:52:54,640 --> 00:52:55,681 und gibt das neue Array. 948 00:52:55,681 --> 00:52:58,035 949 00:52:58,035 --> 00:53:00,160 Reduzieren Sie, im Grunde Ihnen es ein Array, es wird Ihnen 950 00:53:00,160 --> 00:53:02,930 eine Funktion, die zwei Argumente übernimmt. 951 00:53:02,930 --> 00:53:07,100 Es wird die Funktion zuerst die Anlege erste Argument mit einigen Starterwert. 952 00:53:07,100 --> 00:53:09,440 Dann zu diesem Ergebnis in der zweiten. 953 00:53:09,440 --> 00:53:12,590 Anschließend zu diesem Ergebnis im dritten dann zu diesem Ergebnis in der vierten. 954 00:53:12,590 --> 00:53:14,870 Und dann zurückkehrt, wenn es bis zum Ende gelangt. 955 00:53:14,870 --> 00:53:17,620 So zum Beispiel, wenn Sie wollen berechnen die Summe aller Elemente, 956 00:53:17,620 --> 00:53:23,240 in einem Array, als Sie vielleicht rufen reduzieren mit [unverständlich] zu reduzieren einen Zusatz 957 00:53:23,240 --> 00:53:26,620 Funktion, wie func a, b, bringe ein plus b. 958 00:53:26,620 --> 00:53:28,960 Und starten Sie dann einen Wert von 0. 959 00:53:28,960 --> 00:53:32,950 >> Und all dies, können Sie sie zu finden in der R-Dokumentation beschrieben, 960 00:53:32,950 --> 00:53:35,720 in jedem Lehrbuch über funktionalen Programmierung. 961 00:53:35,720 --> 00:53:38,330 Es gibt auch diese Klasse von Funktionen aufgerufen gelten Funktionen, 962 00:53:38,330 --> 00:53:42,807 die ich don't-- sie ein wenig schwer zu erklären, 963 00:53:42,807 --> 00:53:45,640 aber wenn Sie in aussehen [unverständlich] gebucht, dass ich zu Beginn zitiert, 964 00:53:45,640 --> 00:53:48,615 erklärt er ihnen ziemlich gut in seinem Anhang über R-Programmierung. 965 00:53:48,615 --> 00:53:51,599 966 00:53:51,599 --> 00:53:53,390 Mehr über Praktiken, Anhängen an Vektoren. 967 00:53:53,390 --> 00:53:57,570 968 00:53:57,570 --> 00:53:58,070 Ja? 969 00:53:58,070 --> 00:54:01,651 970 00:54:01,651 --> 00:54:02,900 Ich glaube, ich sollte, dass zu korrigieren. 971 00:54:02,900 --> 00:54:07,450 In diesem ersten Zeile, vec Pfeil, dass Pfeil nicht da sein sollte. 972 00:54:07,450 --> 00:54:10,920 Sie können auf einen Vektor zuordnen, wieder, indem nehmen seine Länge plus 1 973 00:54:10,920 --> 00:54:13,220 und Zuweisen einen Wert zu. 974 00:54:13,220 --> 00:54:18,970 Das wird zu erweitern, die den Vektor, oder Sie kann vec equals c, vec newvalue zu tun. 975 00:54:18,970 --> 00:54:21,540 Auch wenn Sie mit C verwenden einem Argument als ein Vektor, 976 00:54:21,540 --> 00:54:23,300 die resultierende Hierarchie wird abgeflacht. 977 00:54:23,300 --> 00:54:27,160 So dass Sie einfach nur ein Vektor- das ist um 1 erweitert. 978 00:54:27,160 --> 00:54:30,410 Nie tun. 979 00:54:30,410 --> 00:54:33,330 >> Der Grund, warum Sie sollte das nicht das ist. 980 00:54:33,330 --> 00:54:37,430 Wenn Sie einen Vektor zuordnen, es insofern einen gewissen Teil des Speichers. 981 00:54:37,430 --> 00:54:40,680 Wenn Sie diesen Vektor-Größe zu erhöhen, es hat, um den Vektor umverteilen 982 00:54:40,680 --> 00:54:43,820 irgendwo anders. 983 00:54:43,820 --> 00:54:46,980 Usw. Neuzuweisung ist recht teuer. 984 00:54:46,980 --> 00:54:50,530 Ich will nicht in die Details, wie gehen Speicherverteiler implementiert sind 985 00:54:50,530 --> 00:54:57,280 auf Ebene des Betriebssystems, aber es dauert viel Zeit 986 00:54:57,280 --> 00:54:58,962 um einen neuen Teil des Speichers zu finden. 987 00:54:58,962 --> 00:55:00,920 Und auch, wenn Sie Neuzuweisung viel, viel 988 00:55:00,920 --> 00:55:03,500 der immer größer Brocken, Sie am Ende 989 00:55:03,500 --> 00:55:06,420 mit einem so genannten Speicherfragmentierung, 990 00:55:06,420 --> 00:55:09,390 wobei der verfügbare Speicher in viele kleine Blöcke aufgeteilt 991 00:55:09,390 --> 00:55:11,500 im Speicher Verteiler Gesichtspunkt. 992 00:55:11,500 --> 00:55:15,340 Und es wird immer schwieriger Speicher für andere Dinge zu finden. 993 00:55:15,340 --> 00:55:19,455 Anstatt also, wenn Sie dies tun müssen, wenn, Sie, um einen Vektor von einem Ende Wachsen brauchen 994 00:55:19,455 --> 00:55:24,240 zum anderen, anstelle von Anhängen an das ständig, sollten Sie im Voraus zuweisen es. 995 00:55:24,240 --> 00:55:29,310 Vec Pfeil, Vektorlänge entspricht 1.000, oder was auch immer. 996 00:55:29,310 --> 00:55:33,200 >> Und dann müssen Sie nur zuweisen können um den Vektor der Werte ein 997 00:55:33,200 --> 00:55:36,000 eine Zeit, nachdem Sie es einmal vergeben habe. 998 00:55:36,000 --> 00:55:40,140 Ich lief in diesem, wieder, mein Sommerjob als ich das Schreiben NRA Differenz 999 00:55:40,140 --> 00:55:42,120 Gleichungslöser. 1000 00:55:42,120 --> 00:55:43,180 Nicht symbolischen Zahlen. 1001 00:55:43,180 --> 00:55:49,290 Die Idee ist, dass, sobald Sie haben ein Wert für Ihre Lösung, 1002 00:55:49,290 --> 00:55:51,240 Dieses verwenden Sie, um das nächste zu berechnen. 1003 00:55:51,240 --> 00:55:53,700 Also meine natürlichen naiven Neigung war in Ordnung zu sagen, 1004 00:55:53,700 --> 00:55:56,930 also werde ich mit einem Vektor zu starten das ist ein wesentlicher Wert. 1005 00:55:56,930 --> 00:56:01,260 Berechnen Sie aus, dass der nächste Wert das geht auf meinen Lösungsvektor, 1006 00:56:01,260 --> 00:56:02,630 und fügen Sie das. 1007 00:56:02,630 --> 00:56:05,290 >> Etwas anderes zu erstellen, hängen Sie, dass. 1008 00:56:05,290 --> 00:56:08,120 Es ging sehr, sehr langsam. 1009 00:56:08,120 --> 00:56:11,540 Und wenn ich dies erkannt und ich mein System verändert 1010 00:56:11,540 --> 00:56:16,020 anhängt zu diesem Vektor wie 10.000 bis 100.000 mal, 1011 00:56:16,020 --> 00:56:18,910 nur vor, eine Zuweisung eines Vektors und nur mit dem Laufen. 1012 00:56:18,910 --> 00:56:22,100 Ich habe mehr als 1000-fach beschleunigen. 1013 00:56:22,100 --> 00:56:26,280 Also das ist eine sehr häufige Falle für R-Programmierung. 1014 00:56:26,280 --> 00:56:31,560 Wenn Sie für den Aufbau einer Vektor- Stück für Stück, vorge ordnen es. 1015 00:56:31,560 --> 00:56:35,360 1016 00:56:35,360 --> 00:56:40,240 >> Ein weiteres gemeinsames Reise up-- dies ist meine letzte Rutsche, nicht worry-- ist die Fehlerbehandlung. 1017 00:56:40,240 --> 00:56:42,890 R, um ehrlich zu sein, nicht wirklich das sehr gut. 1018 00:56:42,890 --> 00:56:45,010 Es gibt viele Probleme, die auftauchen können. 1019 00:56:45,010 --> 00:56:48,360 Zum Beispiel, wenn Sie ein Array erhalten oder einem Vektor aus einem Funktions 1020 00:56:48,360 --> 00:56:52,377 dass Sie erwarteten ein Einzel Wert herkommen, oder umgekehrt, 1021 00:56:52,377 --> 00:56:55,460 und Sie passieren, dass in eine Funktion, Sie schrieben erwartet einen einzelnen Wert, 1022 00:56:55,460 --> 00:56:57,270 das kann ein Problem sein. 1023 00:56:57,270 --> 00:57:01,440 >> Bestimmte Funktionen null zurück, wie zu tun, sagen wir, 1024 00:57:01,440 --> 00:57:05,560 Lesen aus einem nicht vorhandene Schlüssel in einer Liste. 1025 00:57:05,560 --> 00:57:08,527 Aber null ist nicht wie C wo, wenn Sie versuchen, zu lesen 1026 00:57:08,527 --> 00:57:11,360 aus einem alten Zeiger, [unverständlich] auf den Zeiger Null, es ist nur seg Fehler 1027 00:57:11,360 --> 00:57:14,109 und wenn Sie in Ihrem Debugger sind es sagt Ihnen genau, wo Sie sind. 1028 00:57:14,109 --> 00:57:17,080 1029 00:57:17,080 --> 00:57:20,772 Stattdessen null wird Funktionen do-- unvorhersehbare Dinge zu tun 1030 00:57:20,772 --> 00:57:21,730 wenn sie übergeben null. 1031 00:57:21,730 --> 00:57:24,575 Wie, wenn Sie übergeben max null sind, es gebe Ihnen negativ unendlich. 1032 00:57:24,575 --> 00:57:27,230 1033 00:57:27,230 --> 00:57:28,190 Und so, ja. 1034 00:57:28,190 --> 00:57:30,880 1035 00:57:30,880 --> 00:57:32,630 Und so geschah dies einmal zu mir, als ich 1036 00:57:32,630 --> 00:57:34,771 verändert eine Reihe von Feldern in meiner Liste Struktur 1037 00:57:34,771 --> 00:57:37,520 einmal ohne an anderer Stelle sie zu ändern als ich von ihnen zu lesen. 1038 00:57:37,520 --> 00:57:40,670 Und dann bekam ich alle möglichen Zufalls Unendlich Ergebnisse tauchten 1039 00:57:40,670 --> 00:57:43,080 und ich habe keine Ahnung, woher sie kamen. 1040 00:57:43,080 --> 00:57:45,310 Und leider gibt es keine wirkliche R strikten Modus 1041 00:57:45,310 --> 00:57:48,940 wo man, wenn etwas zu sagen sieht aus wie könnte es ein Fehler sein, 1042 00:57:48,940 --> 00:57:51,960 nur dort zu stoppen, so dass ich sein kann diszipliniert und zu fixieren, dass. 1043 00:57:51,960 --> 00:57:55,282 1044 00:57:55,282 --> 00:57:57,240 Jedoch gibt es etwas genannt Stop, wenn nicht. 1045 00:57:57,240 --> 00:58:00,480 Dies ist äquivalent zu C geltend zu machen, wenn Sie darüber gesprochen habe. 1046 00:58:00,480 --> 00:58:02,690 Ich glaube nicht, dass C durchsetzen ist ein Vortrag Thema, 1047 00:58:02,690 --> 00:58:06,370 aber Ihr Stimmführer vielleicht drüber gegangen. 1048 00:58:06,370 --> 00:58:10,393 Und zu stoppen, wenn nicht grundsätzlich nimmt jede Prädikat, so dass jede Aussage, dass 1049 00:58:10,393 --> 00:58:11,824 kann wahr oder falsch sein. 1050 00:58:11,824 --> 00:58:13,490 Und wenn es falsch ist, stoppt er sein Programm. 1051 00:58:13,490 --> 00:58:18,260 Es sagt Ihnen genau, was Sie säumen waren und welche Bedingung fehlgeschlagen. 1052 00:58:18,260 --> 00:58:21,910 >> Und dies sehr nützlich, zum Beispiel, sanity Prüfung, Funktionseingänge. 1053 00:58:21,910 --> 00:58:25,110 Also, wenn Sie eine Funktion haben und Sie können erwarten, sagen wir, 1054 00:58:25,110 --> 00:58:29,640 Sollten Sie mir einen Termin geben, möchte ich die Daten nur ein Vektor der Länge 1 sein 1055 00:58:29,640 --> 00:58:31,735 und irgendwo zwischen 1 und 31. 1056 00:58:31,735 --> 00:58:34,420 1057 00:58:34,420 --> 00:58:36,170 Und wenn nicht, ich weiß, versuchen Sie es erneut. 1058 00:58:36,170 --> 00:58:40,280 Und ich wählen, um es vor dies zu stoppen hat zufällige Folgewirkungen mit Code 1059 00:58:40,280 --> 00:58:44,190 , dass es schwieriger ist, durch zu verfolgen. 1060 00:58:44,190 --> 00:58:47,170 Also das ist eine mögliche verwenden für Stopp, wenn nicht. 1061 00:58:47,170 --> 00:58:48,660 >> Wie auch immer, auf OK. 1062 00:58:48,660 --> 00:58:49,690 Also das ist das Ende. 1063 00:58:49,690 --> 00:58:51,290 Vielen, vielen Dank für Ihr Kommen. 1064 00:58:51,290 --> 00:58:53,710 Ich bin ein blutiger Anfänger auf diese. 1065 00:58:53,710 --> 00:58:57,270 So leid, wenn dir langweilig ist oder verwirrt oder was auch immer. 1066 00:58:57,270 --> 00:59:01,670 Ich bin glücklich, Fragen per E-Mail nehmen bei connorharris@college.harvard.edu. 1067 00:59:01,670 --> 00:59:07,230 Dies gilt auch für alle gerade so leben oder höher auf. 1068 00:59:07,230 --> 00:59:10,190 Außerdem bin ich auch nicht a TF, bin ich auch sehr 1069 00:59:10,190 --> 00:59:13,900 bereit, als inoffizieller dienen Ratgeber für alle, die es 1070 00:59:13,900 --> 00:59:15,460 Verwendung von R in einem Abschlussprojekt. 1071 00:59:15,460 --> 00:59:19,900 >> Wenn Sie möchten, dass, dann nur um Ihre TF sprechen 1072 00:59:19,900 --> 00:59:23,750 und dann schreiben Sie mir eine E-Mail, so Ich weiß, was Sie gerade arbeiten 1073 00:59:23,750 --> 00:59:26,680 und so kann ich einrichten Sitzung mal mit Ihnen, wenn Sie wollen. 1074 00:59:26,680 --> 00:59:27,990 Also noch einmal, ich danke Ihnen sehr. 1075 00:59:27,990 --> 00:59:28,960 Ich hoffe, dass es Ihnen gefallen hat. 1076 00:59:28,960 --> 00:59:29,450 >> ZIELGRUPPE: [unverständlich]. 1077 00:59:29,450 --> 00:59:30,617 >> CONNER HARRIS: Natürlich. 1078 00:59:30,617 --> 00:59:34,910 >> Publikum: Was für ein Projekt wäre ein CS Studenten verwenden R für? 1079 00:59:34,910 --> 00:59:37,427 1080 00:59:37,427 --> 00:59:40,510 CONNER HARRIS: Also, wenn Sie nicht tun, etwas, das rein in Data Mining ist, 1081 00:59:40,510 --> 00:59:43,790 zum Beispiel, und es gibt viele Dinge, 1082 00:59:43,790 --> 00:59:46,692 Ihnen, dass mit den Daten tun konnte, Mining und maschinelles Lernen. 1083 00:59:46,692 --> 00:59:48,900 Vielleicht möchten Sie R für den Einsatz Bestandteil von etwas. 1084 00:59:48,900 --> 00:59:52,022 Ich brachte, ursprünglich, am Beispiel der, wenn Sie schriftlich eine Website sind 1085 00:59:52,022 --> 00:59:54,730 und Sie automatisiert ausgeführt werden soll statistische Analyse von Ihrem Server 1086 00:59:54,730 --> 00:59:57,990 Protokolle zu einem bestimmten Zeitpunkt jeden Tag, das könnte etwas, das ist sein 1087 00:59:57,990 --> 01:00:01,260 sehr einfach, in nur einer kurzen tun R Skript, das Sie planen können 1088 01:00:01,260 --> 01:00:04,200 jede Nacht laufen, zum Beispiel. 1089 01:00:04,200 --> 01:00:06,550 >> Und ich bin sicher, wenn es gibt einen Grund, Sie würden 1090 01:00:06,550 --> 01:00:11,520 möchte Statistiken oder Grafikfunktionen und haben diese Lauf automatisch statt 1091 01:00:11,520 --> 01:00:13,790 der mit zu interagieren mit den Dingen in Excel, 1092 01:00:13,790 --> 01:00:16,750 zum Beispiel ist etwas möchten Sie vielleicht R für den Einsatz. 1093 01:00:16,750 --> 01:00:21,190 So haben weitere Fragen, bevor ich gehe? 1094 01:00:21,190 --> 01:00:21,690 Nein? 1095 01:00:21,690 --> 01:00:24,960 Na gut, na ja, wieder, danke Dank für Ihr Kommen. 1096 01:00:24,960 --> 01:00:29,417