CONNOR HARRIS: Still I denken einige spannende Video durch eine professionelle Beratung produziert daß R verwendet eine Menge in seine Arbeit. SPRECHER: Was verbirgt sich hinter den Statistiken, die Analyse und die Visualisierungen dass die heutigen hellsten Daten Wissenschaftler und Wirtschaftsführer setzen auf mächtige Entscheidungen zu treffen? Sie können nicht immer sehen. Aber es ist da. Es heißt R, r-- die Open-Source- statistische Programmiersprache dass Datenexperten die Welt über den Einsatz für alles von Mapping breiten gesellschaftlichen und Marketing-Trends Online zur Entwicklung der Finanz- und Klima Modelle, fahren unsere Volkswirtschaften zu helfen und Gemeinden. Aber was genau ist R und wo R starten? Nun ursprünglich, R begonnen hier mit zwei Professoren die eine bessere statistische wollte Plattform für ihre Studenten. So schufen sie ein Vorbild Nach dem statistischen Sprach S. Sie, zusammen mit vielen anderen, gehalten, die an und mit R, Erstellen Werkzeuge für R und der Suche nach neue Anwendungen für R jeden Tag. Dank diesem ist weltweite Community Anstrengung, R gehalten mit Tausenden wachsen der vom Benutzer erstellten Bibliotheken gebaut In den R-Funktionalität zu verbessern und Crowdsourcing-Qualitätsvalidierung und Unterstützung von der anerkanntesten Branchenführer in jedem Feld, nutzt R. Das ist sehr gut, denn R ist das Beste, was sie tut. Angehende Experten schnell und leicht zu interpretieren, interagieren, und Daten zu visualisieren, die ihre schnell wachsende Gemeinschaft von R-Nutzer weltweit und sehen, wie Open-Source- R weiter gestalten Die Zukunft der statistischen Analyse und Daten Wissenschaft. CONNOR HARRIS: OK, groß. Also meine eigene Darstellung wird ein bisschen nüchterner. Es wird nicht beinhalten, dass ein Groß spannende Hintergrundmusik. Aber wie Sie im Video gesehen haben, ist R sort eines Allzweck-Programmiersprache. Aber es war vor allem erstellt für die statistische Arbeit. So ist es für die Statistik entwickelt, für Datenanalyse, für Data Mining. Und so können Sie dies in einem viel zu sehen die Design-Entscheidungen, dass die Macher von R gemacht. Es ist für die größtenteils entwickelt, Menschen, die nicht Experten in der Programmierung, der sind nur Abholung Programmierung an der Seite, so dass sie ihre Arbeit tun können in den Sozialwissenschaften oder in der Statistik oder Wasauchimmer. Es hat eine Menge sehr wichtige Unterschiede von C Aber die Syntax und die Paradigmen dass es verwendet im Großen und Ganzen die gleichen. Und Sie sollten recht fühlen viel zu Hause auf Anhieb. Es ist ein Imperativ Sprache. Sie nicht zu viel Sorgen zu machen wenn Sie nicht wissen, den Begriff. Aber es gibt einen Unterschied zwischen Imperativ, deklarativen, und funktional. Imperativ bedeutet nur, die Sie machen Aussagen, die im Grunde Befehle werden. Und dann der Dolmetscher oder der Computer folgt sie nacheinander. Es ist schwach typisierte, gibt es keine Typdeklarationen in R. Und dann die Linien zwischen verschiedenen Arten sind ein bisschen mehr lose als sie sind in C, zum Beispiel. Und wie ich schon sagte, es gibt sehr umfangreiche Ausstattung für die grafische Darstellung für statistische Analyse, für Data Mining. Diese werden sowohl in das eingebaute Sprache und, wie das Video, sagte, Tausende von Dritten Bibliotheken, können Sie herunterladen und kostenlos nutzen mit sehr lockeren Lizenzbedingungen. So im Allgemeinen, würde ich empfehlen, dass Sie an diesen beiden Bücher schauen wenn Sie vorhaben, auf R. One arbeiten wollen von ihnen ist der offizielle R Anfänger Führer. Es ist durch die gepflegt Kernentwickler von R. Sie können sie erneut herunterladen, frei von aufladen und rechtlich zu diesem Link gibt. Alle diese Folien gehen, um zu gehen oben auf dem Internet, auf CS50 Website Nachdem dies geschehen ist. So dass keine Notwendigkeit zu kopieren Dinge nach unten verzweifelt. Das andere ist ein Lehrbuch von Cosma Shalizi, , die eine Statistikprofessor an ist Carnegie Mellon, genannt Advanced Data Analysis von ein Elementary Point of View. Dies ist nicht in erster Linie ein R Buch. Es ist ein Buch und Statistiken es ist eine Datenanalyse Buch. Aber es ist sehr zugänglich für Menschen, haben ein gewisses Maß an Wissen Statistiken. Ich habe noch nie eine formale Verlauf genommen. Ich weiß nur, Bits und Stücke aus verschiedenen verbündeten Themen dass ich Kurse in gemacht. Und ich war in der Lage zu verstehen, es sehr gut. Alle Figuren sind, in R. Sie werden in R gemacht und sie haben auch Code unter jeder Figur, die Ihnen sagen, wie Sie machen jede Figur mit R-Code. Und das ist sehr nützlich, wenn Sie versuchen zu emulieren sind einige Zahl, die Sie in einem Buch zu sehen. Und wieder kostenloser Download stat.cmu.edu/cshalizi/ Sorry, dass Slash werden sollte Tilde cshalizi. Ich werde dafür sorgen, dass zu korrigieren , wenn die offizielle gleitet nach oben. / ADAfaEPoV, die gerade die ist Akronym der Buchtitel. So allgemeinen caveats-- R hat eine Menge von Funktionen. Ich bin nur in der Lage sein zu decken die Oberfläche einer Menge Dinge. Auch der erste Teil des Seminars wird etwas von einem Daten-Dump zu sein. Ich bin mir ziemlich leid. Im Grunde bin ich zu gehen führen Sie in eine Menge Dinge, rechts von der Fledermaus, los schnellstens. Und dann haben wir zu bekommen der lustige Teil, das ist die Demo, wo ich kann dir alles zeigen dass wir etwa auf dem Bildschirm gesprochen. Und Sie können spielen, um auf eigene Faust. Also es geht um eine Menge sein, technischen Sachen auf hier geworfen. Nicht über das Kopieren von allem, was sich zu kümmern. Da A, können Sie alle Sachen auf dem CS50 Website später. Und B, es ist nicht wirklich so wichtig dies von den Objektträgern zu speichern. Es ist wichtiger, dass Sie einige intuitive Anlage mit es und das kommt nur herum spielen. Warum also R? Grundsätzlich, wenn Sie ein Projekt haben, dass beinhaltet Bergbau große Datensätze, Daten Visualisierung, die Sie sollte R. verwenden Wenn Sie Dabei komplizierte statistische Analysen, dass wäre es schwierig, in Excel, Beispielsweise wäre es außerdem auch good-- werden wenn du tust statistischen Analyse, die automatisiert ist. Sagen wir, du bist Pflege einer Website. Und Sie den Server Log lesen wollen jeden Tag und kompilieren eine Liste, wie die Top-Länder, Ihre Benutzer herkommen, einige zusammenfassende Statistiken, wie lange verbringen sie auf Ihrer Website oder was auch immer. Und Sie, dies jeden Tag ausgeführt werden soll. Nun, wenn Sie dies tun in Excel, Sie müssten, um ihren Server Log zu gehen, importieren, die in eine Excel-Daten-Tabelle, laufen die ganze Analyse manuell. Mit R können Sie schreiben Sie einfach ein Skript. Planen Sie es jeden Tag zu laufen von Ihrem Betriebssystem. Und dann jeden Abend um 02.00 Uhr, oder wann immer Sie es planen zu laufen, sie schauen durch Ihre Internet-Verkehr für diesen Tag. Und dann am nächsten Tag, werden Sie haben diese glänzenden, neuen Bericht oder was auch immer mit allen Informationen, die Sie beantragt. Also im Grunde R ist für Cisco Programmierung gegenüber Cisco Analyse. Vorläufige ist getan. Lassen Sie uns in die reale Dinge zu bekommen. So gibt es drei echte Typen in der Sprache. Es gibt numerischen Typ. Es ist eine Art Unterschied zwischen Ganz- und Fließpunkte, aber nicht wirklich. Es gibt einen Charakter Typ, der Zeichenfolgen ist. Und es gibt eine logische Art, die boolesche Werte ist. Und Sie zwischen Typen umwandeln kann Verwendung dieser Funktionen, wie numerisch, als Charakter, als logisch. Wenn Sie anrufen, zum Beispiel, als numerisch auf einer Schnur, wird es versuchen, diese Zeichenfolge zu lesen als eine Zahl, auf die gleiche Weise dass a2i und scanf zu tun, und C. Wenn Sie als Zahlen auf wahr oder falsch nennen es wird auf 1 oder 0 umwandeln. Wenn Sie als Zeichen nennen auf etwas, es wird umzuwandeln, die in eine Zeichenfolgendarstellung. Und dann gibt es Vektoren und Matrizen. So Vektoren sind im Grunde 1 dimensionale Arrays. Sie sind, was wir als Arrays in C. Matrizen, 2-dimensionale Arrays. Und dann höher dimensionale Arrays möglich haben 3, 4, 5 Dimensionen oder was auch immer numerischer Werte, von Strings, von Logikwerten. Sie haben auch Listen, die sind eine Art assoziatives Array. Ich werde in diese ein wenig zu bekommen. So eine wichtige Sache dass Ausflüge Menschen in R ist, dass es keinen real, reine Atomtypen. Es gibt keinen tatsächlichen Unterschied zwischen eine Zahl, wie ein Zahlenwert, und eine Liste von numerischen Werten. Numerische Werte sind eigentlich die dieselben wie die Vektoren der Länge 1. Und dies hat eine Anzahl von wichtige Implikationen. One, bedeutet dies, dass Sie tun können, Dinge sehr leicht, die beinhalten wie das Hinzufügen einer Zahl in einen Vektor. R wird im Wesentlichen Figur heraus, was Sie damit meinen. Und ich werde, um in einem zweiten zu bekommen. Es bedeutet auch, dass es keine Möglichkeit gibt für die Aktivität in dem Ausmaß checker-- dass so etwas existiert in R- zu sagen, wenn Sie in der Einzelwert bestanden habe wenn es erwartet ein Array oder umgekehrt. Und dass einige seltsame verursachen können Probleme, die ich lief in, wenn Ich war mit R während meiner Sommerjob. Und es gibt keine Mischtyp-Arrays. So kann man nicht haben ein Array waren die ersten Elemente ist, weiß ich nicht, die Zeichenfolge "John" und die zweite Element ist die Nummer 42. Wenn Sie versuchen, das zu tun, dann werden Sie bekommen einfach alles in einen String konvertiert. So haben wir John String, String 42. So ungewöhnlichen syntaktischen Eigenschaften-- meisten R Syntax ist sehr ähnlich zu C. Es gibt ein paar wichtige Unterschiede. Typing ist sehr schwach. Es gibt also keine Variablendeklarationen. Zuordnung verwendet die seltsame Fehlerbetreiber weniger als Bindestrich. Kommentare sind mit dem Doppelkreuz. Ich denke, jetzt Tage nennen wir es hashtag aber das ist nicht wirklich accurate-- nicht die doppelten Schrägstrich. Modular Reste mit %% Zeichen. Ganzzahl-Division ist mit% /%, die ist sehr schwer zu lesen, wenn es projiziert auf dem Bildschirm erscheint. Sie können Bereiche erhalten ganze Zahlen mit dem Doppelpunkt. Also 2,5 wird Ihnen ein Vektor- aller Zahlen 2 bis 5. Arrays sind eine indizierte, die Schrauben eine Menge Leute, up, wenn sie aus mehr sind typischen Programmiersprachen, wie C, wo die meisten Dinge sind Null indizierten. Auch dies ist in der R Erbe als Sprache für wie nicht professionellen Programmierern kommt in. Wenn Sie einen Soziologen sind oder ein Wirtschaftswissenschaftler oder etwas und Sie verwenden möchten, sind R grundsätzlich als Ergänzung um Ihren wichtiger professionelle Arbeit, Sie gehen zu finden sind one-Indizierung ein bisschen mehr natürliche. Weil Sie das Zählen beginnen bei 1 im Alltag, nicht 0. For-Schleifen, ist dies ähnlich die foreach-Konstrukt in PHP, wo es zu bekommen, lernen in-- ziemlich bald. Welches ist für Wert im Vektor und dann haben Sie die Dinge mit dem Wert zu tun. Publikum: Das liegt in der Vorlesung zu kommen. CONNOR HARRIS: Oh, das ist kommen Vortrag ausgezeichnet. Publikum: Die Zuordnung ist es soll von rechts zeigen nach links? CONNOR HARRIS: Von rechts nach links, ja. Sie können es, wenn der Wert auf zu denken der rechte in der Variablen schob auf der Linken. ZIELGRUPPE: OK. CONNOR HARRIS: Und schließlich Funktion Syntax ist ein wenig seltsam. Sie haben den Namen der Funktion foo zugeordnet zu diesem Schlagwort Funktion, gefolgt durch alle Argumente und dann die Rumpf der Funktion danach. Wieder diese Dinge scheint ein wenig seltsam. Sie werden zur zweiten Natur geworden, nachdem Sie arbeiten mit der Sprache für ein bisschen. So Vektoren, die Art und Weise Sie ein Vektorkonstrukt Sie ist vom Typ C, der ein Schlüsselwort ist, dann alle Zahlen Sie wollen oder Strings oder Wasauchimmer. Argumente auch Vektoren sein. Aber das resultierende Array wird abgeflacht. Sie können also nicht Arrays, wo haben Einige Elemente sind einzelne Zahlen und einige Elemente sind Arrays selbst. Also, wenn Sie versuchen, eine zu bauen Array waren das erste Element 4 und das zweite Element ist das Array 3,5 Sie einfach nur ein Array drei Elemente, 4,3,5. Sie können nicht von Mischtyp sein. Wenn Sie versuchen, lesen und schreiben außerhalb der Grenzen eines Vektors Sie werden diesen Wert genannt NA a erhalten das steht für einen fehlenden Wert. Und dies ist vorgesehen für wie Statistiker, sind mit unvollständigen Datensätzen arbeiten. Wenn Sie eine Funktion, die angeblich ist anzuwenden auf nur eine Zahl auf ein Array zu nehmen dann, was Sie bekommen, desto Funktion wird über das Array abzubilden. Also, wenn Ihre Funktion an, dauert lassen eine Zahl und gibt diesen Platz. Sie gelten, dass auf das Array 2,3,5 Was Sie bekommen ist das Array 4,9,25. Und das ist sehr nützlich, weil es bedeutet, dass Sie nicht haben, um für die Schlaufen für Schreib tut sehr einfache Dinge wie die Anwendung eine Funktion, um alle Mitglieder des Datensatzes. Was, wenn Sie mit großen Arbeits Datensätze, müssen Sie eine Menge zu tun. Binäre Funktionen angewandter Eintrag für Eintrag. Ich werde in das zu bekommen. Sie können sie mit Arrays zugreifen oder Vektoren mit eckigen Klammern. So Vektornamen in eckigen Klammern 1 wird Ihnen das erste Element. Vector Namen eckigen Klammern 2 wird Ihnen das zweite Element. Sie können auf einem Vektor übergeben von Indizes und Sie werden wieder heraus im Grunde ein Unterfaktor. So können Sie Vektornamen Klammern C tun können, 2,4 und Sie erhalten einen Vektor, der die zweite und vierte Elemente des Arrays. Und wenn Sie wollen einfach nur ein kurze Zusammenfassung statistik eines Vektors wie Quartils Palette, Median, Maximum, was auch immer, Sie können einfach Typenübersicht Vektor-Namen und erhalten, dass aus. Das ist nicht in wirklich nützlich Programmierung, aber wenn Sie spielen um die Datenmengen, ist es praktisch. Matrices-- Grunde höherdimensionalen Arrays. Sie haben diese spezielle Notation Syntax. Matrix mit einer Anordnung, die bekommt in-- sorry, Matrix mit Daten gefüllt, Anzahl von Zeilen, Anzahl von Spalten. Wenn Sie einige Daten haben, füllt es in das Array im Grunde geht von oben nach unten erste. Dann links nach rechts. So, so. Und R ist eingebaut Matrixmultiplikationen, spektrale Zerlegung, Diagonalisierung, eine Menge Dinge. Wenn Sie höherdimensionalen möchten Arrays, SO 3, 4, 5, oder was auch immer Dimensionen können Sie das tun. Die Syntax ist Array dim gleich c, wird die Liste der Dimensionen. Also, wenn Sie ein 4-dimensionales Array möchten mit den Abmessungen 4, 7, 8, 9, wobei die Anordnung, dim ist gleich c (4,7,8,9). Der Zugriff auf einzelne Werte mit Klammern erster Eintrag Komma zweiten Eintrag. Sie können ganze Scheiben erhalten von Zeilen oder Spalten. Mit diesem unvollständiger Syntax ist es nur Zeilennummer Komma oder Komma Spalte Anzahl. So Listen sind eine Art von assoziierten Array. Sie haben ihre eigene Syntax hier. Wieder nicht hektisch kopieren Sie alle diese nach unten. Dies ist nur so, dass die Menschen gehen durch die Folien später haben dies alles in einer schönen Referenz. Und das wird sehr natürlich einmal geworden Ich eigentlich zu Fuß durch die Demos. So listet ein grundsätzlich zugehörigen Arrays. Sie können Werte mit Zugang Listenname, Dollarzeichen, Taste. Also, wenn Sie Ihre Liste namens foo, dann haben Sie es so, zugreifen können. Sie können einen ganzen Schlüssel-Wert-Paar zu bekommen indem in der eckigen Klammer-Index. Wenn Sie von einem nicht existierenden lesen Taste, erhalten Sie null. Es wird nicht Fehler. Das Ding ist, R wird, wie zu tun viel mit null, wie es kann. Und dies kann bedeuten, dass, wenn Sie nicht erwartet, null raus irgendeiner Liste zu lesen, werden Sie einige bekommen unvorhersehbaren Fehlern weiter unten die Linie. So erging es mir meine Sommer-Job, als ich mit R wo ich verändert, wie eine bestimmte Liste wurde an einer Stelle definiert, aber nicht später das ändern Code, der Werte aus es zu lesen. Und so, was passiert war, war ich Lesen NULL-Werte aus dieser Liste, Weitergabe in Funktionen, und sehr verwirrt, wenn ich alle Arten von Zufalls Unendlichkeiten tauchten in dieser Funktion. Denn wenn Sie bestimmte maximale gelten oder minimalen Funktionen auf null, Du unendliche Werte raus. Datenrahmen, sie sind eine Unterklasse der Liste. Jeder Wert ist eine Vektor- der gleichen Länge. Und sie sind für die Darstellung verwendet wird, Grundsätzlich Datentabellen. Es gibt diese Initialisierung Syntax. Dies alles wiederum viel sein klarer, wenn Sie sich an die Demo. Und das Schöne an Datenrahmen ist, dass man können Namen auf alle Spalten geben und Namen aller Reihen. Und das macht den Zugriff auf sie etwas freundlicher. Auch dies ist, wie die meisten Funktionen, lesen Sie in Daten aus Excel-Tabellen oder von Text-Dateien, beispielsweise werden in ihren Daten zu lesen. Sie werden es kannst eine Art von Datenrahmen. So functions-- Funktionen Syntax ist ein wenig seltsam. Wieder ist es der Name der Funktion, zuzuordnen, dieses Schlüsselwort-Funktion und dann die Liste der Argumente. So gibt es einige schöne Dinge darüber, wie Funktionen arbeiten hier. Zum einen, die Sie tatsächlich zuweisen können Standardwerte für bestimmte Argumente. So können Sie R1 sagen equals-- Sie foo sagen ist eine Funktion, wobei R1 gleich etwas standardmäßig, wenn der Benutzer legt fest, keine Argumente. Ansonsten ist es, was er in. Und das ist sehr praktisch, weil eine Menge von unseren Funktionen haben oft Dutzende oder Hunderte von Argumenten. Zum Beispiel die, die zum Plotten Diagramme oder Plotten Streudiagramme Argumente haben, die steuern, alles, was aus dem Titel und der Achse Etiketten auf die Farbe der Regressionsgeraden. Und so, wenn Sie nicht wollen, um die Menschen angeben, jeder einzelne von ihnen Hunderte von Argumenten Steuern jeden einzelnen Aspekt eine Kurve oder eine Regression oder was auch immer, es ist schön, diese Standardwerte haben. Und dann können Sie tatsächlich schreiben, wie Sie hierher zurück sah. Oder finden Sie ein besseres Beispiel. Wenn Sie Funktionen aufrufen, können Sie tatsächlich nennen sie mit den Argumentnamen. Also hier ist ein Beispiel dafür, die Matrix-Konstruktor. Es dauert drei Argumente. In der Regel müssen Sie Daten, welches ein Vektor ist. Sie haben N Reihe, die ist die Anzahl der Zeilen. Sie haben N cols-- Anzahl der Spalten. Die Sache ist, wenn Sie geben N Reihe gleich was auch immer und N col gleich, was auch immer, wenn Sie Aufruf dieser Funktion, können Sie tatsächlich stornieren. So können Sie N col erste und N Zeile setzen zweiten, und es wird keinen Unterschied machen. Also das ist ein nettes kleines Feature. Wussten Import und Export. Dies getan werden kann, im Grunde. Es gibt auch Einrichtungen zu schreiben beliebige R-Objekte in eine Binärdatei und dann lesen sie wieder in später. Das ist praktisch, wenn Sie tun, eine große interaktive Sitzung R und Sie speichern müssen Dinge sehr schnell. Standardmäßig R hat ein Arbeitsverzeichnis dass Dateien raus in geschrieben und lesen Sie wieder aus. Sie können, dass mit zu sehen getwg, ändern Sie es mit setdw. Nichts besonders interessant hier So, jetzt die tatsächlichen Statistiken stuff-- multilineare Regression. Also die übliche Syntax ist ein wenig kompliziert. Das Modell ist eine große Aufgabe im Grunde. Es wird beauftragt, LM, Das ist ein Funktionsaufruf. Das erste Element, das y Tilde x1 und was auch immer. Meine Syntax hier ist ein wenig verwirrend. Ich bin mir ziemlich Entschuldigung, das hier ist der normale Weg dass Informatik Bücher tun. Aber es ist ein bisschen komisch. Also im Grunde ist es lm Klammern, erster Punkt wird'variable sorry, abhängig variable Tilde x1 und x2 sowie aber viele unabhängige Variablen, die Sie haben. Und dann können diese entweder Vektoren, die alle die gleiche Länge. Oder sie können Spalte Header in einem Datenrahmen dass Sie gerade in die angeben, zweite Argument Datenrahmen. Sie können auch angeben eine komplexere Formel so dass Sie nicht linear müssen bilden eine eine abhängige Variable, oder eines Vektors auf einen vorbestehenden Vektor. Sie können tun, zum Beispiel ein Vektorkomponente y quadriert plus 1 und zurückbilden, die gegen die melden Sie sich von einem anderen Vektor. Sie können Zusammenfassungen des Druck Modell mit diesem Befehl aufgerufen summary-- nur Zusammenfassung parens Modell. Wieder etwas, was ich zu klären sollte. Etwas anderes, die korrigiert bekommen Wenn die Objektträger nach oben über das Internet. Wenn Sie nur wollen, um zu berechnen eine einfache Korrelations Sie Korrelationsvektor verwenden können 1 Vektor-2 Funktionskern. Methode ist standardmäßig Pearson-Korrelationen. Das sind die Standard, die Sie tun können. Es auch Spearman und Kendell Korrelationen was sind einige Vielzahl von Rangordnung Korrelation. Nun, sie nicht Produkt berechnen müssen Momente zwischen den Vektoren selbst, aber der Rangordnungen des Vektors. Das werde ich später erklären. ZIELGRUPPE: Kurze Frage CONNER HARRIS: Sicher. ZIELGRUPPE: Also, wenn Sie die Berechnung sind für die einfachen Korrelationen zu tun Sie gehen davon aus, dass es eine statistische Bedeutung für die Korrelation? CONNER HARRIS: Sie haben nicht zu. Ein Film ist im Grunde nur eine Maschine. Es wird in zwei Dinge und es wird ausspucken Koeffizienten für die am besten passende Linie. Er berichtet auch Standard- Fehler auf diesen Koeffizienten. Und es wird Ihnen sagen, wie ist das Intercept statistisch signifikant oder Differenz von 0. Ist die Steigung der besten Anpassungslinie statistisch von Null verschieden ist, und so weiter. So dass es nichts wird davon ausgegangen, ich glaube, ist am besten Antwort auf Ihre Frage. OK. Plotting-- so der Hauptgrund, sollten Sie R verwenden, wie multilineare Regression. Grundsätzlich kann jede Sprache hat einige Möglichkeiten dafür. Und ehrlich gesagt R Syntax für Regression ist ein bisschen obskur. Aber Plotten ist, wo es wirklich glänzt. Das Arbeitspferd Funktion Grundstück und es dauert zwei Vektoren x und y. Und dann steht die Ellipsen für eine sehr große Anzahl von optionalen Argumente, steuern alles von Titel zu Farben von verschiedenen Leitungen oder mehreren Stellen, auf die Art der Handlung. Sie können Streu haben Grundstücke oder Liniendiagramme. [Unverständlich] 2 Vektoren der gleichen Länge. Sie können diese mit voraus legen Datenrahmen in Ihrem Skript. Und das wird Ihnen nur Spalte verwenden Überschriften statt der getrennten Vektoren. Sie können geeignetsten Geraden und lokale hinzufügen Regressionskurven zu Ihrem Diagramm. Diese Befehle aufgeführt hier, ab Zeile und Zeilen, standardmäßig diesen erhalten in PopUp Fenster geschrieben da angenommen wird, dass Sie R interaktiv sind. Wenn Sie nicht können schreiben zwei Dateien, sind in wirklich jedem Format Sie möchten. Sorry, ich habe einen Tippfehler Ich habe gerade realisiert. Wenn Sie öffnen möchten weitere graphische Gerät Sie können diese Funktion aufgerufen PNG oder verwenden JPEG oder viele andere Bildformate. Und Sie können Diagramme zu schreiben Was auch immer Dateinamen angeben. So brechen Sie, dass Sie use-- Ich habe nicht in der slide-- schreibe aber es gibt eine Funktion namens dev dot off, dass keine Argumente. Dann gibt es Einrichtungen für 3D-Plot und für die Kontur Plotten wenn Sie machen wollen Diagramme von zwei unabhängigen Variablen. Ich werde jetzt nicht in diese zu bekommen. Es gibt auch einige Einrichtungen für Animation das sind in der Regel von Dritten betrieben. Ich habe Animationen mit R Graphen durchgeführt, aber ich habe nicht diese Dritten verwendet Bibliotheken. So kann ich nicht wirklich bezeugen, um wie gut sie sind. Was ich empfehlen, wenn Sie wollen, Animationen mit R machen wird Sie können schreiben, alle Die Rahmen für die Animationen und dann können Sie eine verwenden können Dritter program-- typische Werte sind FFmpeg genannt oder ImageMagick-- zum Aufnähen alle Ihre Bilder in eine Animation. Also Zeit für die Demo. Also, wenn Sie mit jeder Unix bist wie System welche Linux BSD ist aber BSD verwendet. OS X ein Terminal-Fenster zu öffnen, und Typ R an der Eingabeaufforderung. Wenn Sie R-Studio haben oder dergleichen, die auch funktioniert. Für Windows-Benutzer sollten Sie sein, in der Lage, R im Startmenü zu finden. Es sollte etwas genannt werden wie R x 64 3-Punkt-was auch immer. Öffnen Sie, dass dort oben. So, jetzt lassen Sie mich nur Öffnen Sie ein Terminalfenster. Alles klar, suchen. ZIELGRUPPE: Befehlsraum CONNER HARRIS: Befehl-Raum, ich danke Ihnen. Ich weiß nicht normalerweise verwenden Macs. Terminal, zeigen neuen Fenster. Neue Fenster-Einstellungen Grund, R. So erhalten sollten eine willkommene Nachricht, so etwas wie dieses. Also ich bin mit R interaktiv. Sie können auch R-Skripte natürlich schreiben. Grundsätzlich Skripte ausführen genau die gleiche Weise wie wenn Sie vor dem Computer sitzt wurden Eingabe in jeder Zeile ein zu einer Zeit. Also lassen Sie uns beginnen, indem Sie einen Vektor. Ein Pfeil C 1, 2. 1, 2, 4. OK sicher. Ich kann die Schriftgröße vergrößern. ZIELGRUPPE: Befehl-Plus CONNER HARRIS: Befehl-Plus. Befehl-Plus. In Ordnung, wie das? Gut? OK. Also lassen Sie uns beginnen, indem Deklaration einer Vektorliste. Führen Sie eine, Pfeil, C 1,2,4. Wir können sehen, ein. Nicht über die Halterung dort kümmern. Die Halterungen sind also, wenn Sie ausdrucken sehr lange Arrays, können wir, wo Sie sind. Ein Beispiel wäre, wenn ich wollen einfach nur Bereich 2-200. Wenn ich gedruckte einen sehr Lang Array bilden die Klammern werden, nur damit ich mithalten kann verfolgen, welche Index wir sind auf, wenn ich suche durch dieses visuell. So jedenfalls, haben wir ein. Also sagte ich, bevor die Arrays zu interagieren sehr schön mit, zum Beispiel, unäre Operationen wie diese. Also, was Sie denken, ich werde wenn ich ein plus 1 geben? Ja. Richtig, jetzt werde ich machen Diese verschiedenen Arrays. Nehmen wir an, b c 20,40, 80. Also, was denkst du dieser Befehl zu tun? Fügen Sie die Elemente. Und so im Grunde das ist, was es tut. Also das ist sehr praktisch. Also habe ich, wie ich zu tun. c ist, sagen wir mal, 6 mal 1 bis 10. Also, was tun, ich will sehen, enthalten, denken Sie? So dass alle ein Vielfaches von sechs. Nun, was glauben Sie, passiert, wenn ich das tun? Ich werde diese ein wenig klarer, c, c zu machen. Also, was passiert, sind Sie denke, wenn ich dies tun? a plus c. [UNVERSTÄNDLICH] ZIELGRUPPE: Entweder ein Fehler oder es fügt nur die ersten drei Elemente. CONNER HARRIS: Nicht ganz. Dies ist, was wir bekamen. Was geschieht, ist eine kürzere Array, a, habe radelte. Also haben wir 124, 124, 124. Ja. Und im Grunde, die Sie anzeigen können dieses Verhalten vor, a plus 1, als Unterklasse dieses Verhalten, bei dem die kürzeste Array ist nur die Nummer 1, die eine einem Elementarray ist. Ich habe gerade sagen vector alle die Zeit anstelle von Array, was die r, denn das ist Dokumentation der Regel nicht. Es ist eine tief verwurzelte c Gewohnheit. OK, und so haben wir nun dieses Array. So haben wir dieses Array, c. Wir können zusammenfass erhalten Statistiken über c, Zusammenfassung c. Und das ist schön. So, jetzt lassen Sie uns einige Dinge Matrix. Nehmen wir an, m ist eine Matrix. Machen wir es ein drei mal drei ein. So nrows gleich 3 ist, und ncols gleich 3 ist. Und für die Daten do-- lassen Sie so was glauben Sie, wird dies jetzt tun? Richtig, es ist der nächste. Es ist nrow und nColumn. Also, was ich getan habe, ist ich habe erklärte ein drei mal drei Matrix- und ich habe in einem Neun-Element-Array übergeben. So Logarithmus alle Elemente eins bis neun. Und all diese Werte zu füllen up der array-- leid? Publikum: Das sind Basis 10 Protokolle? CONNER HARRIS: Nein, log natürlichen Logarithmus, so Basis e. Ja, wenn man wollte Basis 10 log, ich denke, man müsste um sich anzumelden, was auch immer, von log 10 unterteilt. Und so werden die Daten der [unverständlich] nur füllt das Array, also von oben nach unten, dann links nach rechts. Und wenn Sie eine andere tun wollte, Array, sagen wir n-Matrix. Lassen Sie uns, ich weiß nicht, 2-13. Oder ich werde etwas Interessanteres zu tun. Ich werde tun, 2 bis 4. nrow ist gleich, sagen wir, 3. NcoI gleich 4. n. Also haben wir diese einsehen. Und jetzt, wenn wir diese zu multiplizieren möchten, wir würden n Prozent Zeiten Prozent zu tun, denn das ist n. Und wir haben Matrix Produkte. Durch diese Art und Weise haben Sie gesehen, wie Als ich erklärte, n, die 2 bis 4 vector habe, bis radelte es füllte alle n? Wenn Sie nehmen wollte, Eigenwertzerlegung, das ist etwas, was wir sehr leicht tun können. Wir können eigen n zu tun. Und dies ist unsere erste Begegnung mit einer Liste. So eigen n ist eine Liste mit zwei Schlüsseln. Werte, die hier diesem Array. Und Vektoren, die in diesem Array ist hier. Also, wenn Sie extrahieren wollte, sagen, das dritte Spalte von der Eigenmatrix, weil die Eigenvektoren Spaltenvektoren sind. So können wir vec eigen n Dollarzeichen zu tun Vektoren, Komma 3, der [unverständlich]. Vec. Ist, dass, wie man erwarten könnte. Dann sage n mal Prozent Zeiten vec. Also hier das Ergebnis sieht so aus, wenn wir die dritte Eigenwert hier, das entspricht mit die dritte Eigenvektor. Es alles multipliziert gerade Diese Eigenvektor, komponentenweise, von der Eigenwert ist. Und das ist das, was wir erwarten würden, weil das, was Eigenwerte sind. Hat hier jemand nicht genommen linearen Algebra? Ein paar Leute, OK. Schalten Sie einfach Ihr Gehirn aus für ein bisschen. Und in der Tat, wenn wir eigen n Dollar-Zeichen-Werte 3 mal vec, und Sie erhalten die gleiche Sache. Es ist anders als eine Zeile formatiert Vektor anstelle eines Spaltenvektors, aber große Sache. Und so, das sind im Grunde die schöne Dinge, die wir tun können, mit Matrizen, gezeigt Listen. Ich sollte das schöne zeigen Dinge über Funktionen. Lassen Sie uns also sagen-- [unverständlich] Funktion Aufruf let es func gegen Funktion n n squared-- tatsächlich, das ist nicht wirklich das beste. a, b, a squared plus b. So eine Sache, über Funktionen wiederum ist sie brauchen keine explizite Rückrechnung. So können Sie die just-- letzte Aussage bewertet wird die Anweisung zurückgegeben werden, oder der Wert zurückgegeben. Also in diesem Fall, wir sind nur die Bewertung eine Anweisung, ein Quadrat plus b. Das wird die Standardrückgabewert sein. Es schadet nie, legte in Rückgabewerte explizit, vor allem, wenn Sie mit einem zu tun Funktion sehr komplizierte Logik fließen. Aber Sie brauchen sie nicht. So, jetzt können wir func 5, 1 zu tun, und Das ist im Grunde, was man erwarten würde. Etwas anderes, was wir tun können, können wir tatsächlich tun func b gleich 1 ist, a gleich 5 ist. Also, wenn wir hier angeben, welche Zahl, welchem ​​Rechtsgrund, auf die Argumentation in der Funktion, können wir in der Umgebung von Flip Diese Werte, wo immer wir wollen. Publikum: Gibt es einen Grund um es zu schreiben, mit dem b ist gleich im Gegensatz zu nur mit die Zahlen und das Komma? CONNER HARRIS: Ja, in der Regel tun, wenn Sie Funktionen haben mit einer Menge von Argumenten. Das mag oft wie sein Fahnen aus, die du nur wollen in seltenen Fällen zu verwenden. Und auf diese Weise können Sie only-- kann auf die spezifischen Argumente beziehen dass Sie verwenden möchten, Nicht-Standardwerte für, und Sie müssen nicht zu schreiben, ein Bündel von Flags gleich falschen ihnen nach. Oder kann ich das wieder mit zu schreiben ein Standardwert wie b gleich 2 ist. Und dann konnte ich f func zu tun, Ich werde 4, 1 dieses Mal zu tun. Und 17, die 4 quadriert plus 1, als Sie vielleicht erwarten. Aber ich könnte auch einfach nennen dies mit func 4, und Ich werde 18, weil Ich glaube nicht, geben Sie b. So b erhält den Standardwert von 2. OK, so jetzt, wenn Sie folgenden zusammen mit der Demo, Geben Sie die folgende Zeile zu Ihrer Verfügung prompt und sehen, was kommt. Eigentlich glaube ich nicht. Geben Sie diese. Sie sollten etwas wie diese zu erhalten. So mtcars wird ein in der Daten gebaut für diese Demonstration gesetzt Zwecke, die kommt mit-- das kommt in der Standardeinstellung mit r Verteilung. Dies ist eine Zusammenstellung von Statistiken aus a 1974 Ausgabe der Zeitschrift Motor Trend ist auf einer Reihe von verschiedenen Fahrzeugmodellen. Also gibt es Meilen pro Gallone, cylinders-- Ich vergesse, was disp ist-- PS. Wahrscheinlich. Wenn Sie nur Google MT Autos, dann eines der ersten Ergebnisse aus der sein offizielle r Dokumentation und es wird erklärt, alle diese Datenfelder. So Gewicht ist-- Gew ist Gewicht des Autos in Tonnen. Q s ist die viertel Meile Zeit. So, jetzt können wir einige lustige Dinge zu tun über MT Autos ist ein Datenfeld. So können wir Dinge tun wie Zeilennamen, mt Autos. Und dies ist eine Liste aller Zeilen in der Datensatz, die Namen von Autos sind. Wir können COLNAMES, mt Autos tun. Wenn Sie mt Autos zu tun, Unter numerischen Index, wie 2. erhalten wir die zweite Spalte aus Diese, die Zylinder wären. Publikum: Was hast du getan? CONNER HARRIS: Ich tippte mt Autos, Halterungen e, das gab mir die zweite Spalte von mt Autos. Oder wenn wir eine Reihe, I-Typ kann mtcars Komma 2, zum Beispiel. Andere Runde 2 Komma, so. Und das geht in Ihrer Reihe. Diese hier haben Sie nur einen Spalte, aber Spalte als Vektor. Ich habe gerade jetzt wurde mir klar, vergessen zu zeigen, ein paar coole Dinge über Vektoren dass Sie mit Indizes tun können. Lassen Sie mich also, dass gerade jetzt zu tun. Lassen Sie uns so tun, c gets-- setzen Diese auf pause-- 2 mal 1 bis 10. So c ist gerade dabei zu sein der Vektor 2 bis 20. Ich kann Elemente wie diese zu nehmen, c2. Ich kann in einem Vektor übergeben wie diese, C- mich lassen benutzen anderen Namen als c, wie vec c. Grundsätzlich mache ich diese, so dass Sie nicht bekommen, zwischen C als verwirrt Vektorkonstruktion Funktion, und dann c als Variablenname. Vec Klammern c 4, 5, 7. Dies werde mich aus dem vierten bekommen, fünften, und sieben Elemente des Arrays. Ich kann vec zu tun, in einer negativen setzen Index, wie negativ 4. Das wird mir mit zu diesem das vierte Element entfernt wird. Dann, wenn ich, um Scheiben machen wollte, Ich kann vec 2 bis 6 zu tun. 2 Doppelpunkt 6 ist nur ein weiterer Vektor, der 2, 3, 4, 5, 6. Spuckt, dass. So jedenfalls zurück zu mt Autos. Lassen Sie uns so tun, einige Regressionen. Lassen Sie uns sagen Modell gets-- uns gelassen linear regress-- Ich weiß nicht. Lassen Sie uns zunächst keine befestigen mtcars, natürlich. So [unverständlich] Modell lm, lass uns zurückbilden Meilen pro Gallone auf Tilde Gewicht. Und dann Datenrahmen mtcars. So Zusammenfassung Modell. OK, so sieht das ein bisschen kompliziert. Aber im Grunde, da, wenn wir versuchen, Meilen pro Gallone zum Ausdruck als eine lineare Funktion des Gewichts, dann haben wir diese Linie hier, die Abschnitte am 37.28. 37.28 würde die theoretischen Meilen sein pro Gallone ein Auto, das Null wiegt. Und dann für jede weitere Tonne, Sie etwa fünf Meilen pro Gallone zu klopfen off davon. Beide Koeffizienten Sie können, Standardfehler dort zu sehen. Und sie sind sehr sind statistisch signifikant. So können wir ganz sicher zu sein, 1 E 10 mit der negativen 10. Also 1 mal etwas mit dem negativen 10, dass, wenn Sie eine schwerere Auto zu machen, es wird noch schlimmer Meilen pro Gallone. Oder wir können eine andere Modell zu testen. Dergleichen anstelle Rückschritte dieses auf Gewicht, Lassen Sie uns zurückbilden es auf Protokoll von Gewicht, weil vielleicht das effektive Gewicht auf Laufleistung ist irgendwie nicht linear. Dies gab uns eine r von 0,7528 zum Quadrat. Also lassen Sie uns versuchen, diese. Dieses Mal machen wir eine andere Variable, auch. Model2. So Zusammenfassend model2. In Ordnung, so wieder, wir haben unsere am besten passende Linie hier. Und dies Zeit-- dies sagen: im Grunde, dass jedes Mal, wenn erhöhen das Gewicht der ein Auto mit einem Faktor von e Sie verlieren so viele Meilen pro Gallone. Und so dieses Mal unsere Reststandard Fehler es-- das spielt keine Rolle, wirklich. Die Reststandardfehler im Grunde nur der Standardfehler dass Sie, nachdem Sie verlassen haben, nehmen die Trendlinie. Und unsere r hier im Quadrat ist 0,81, was ein bisschen besser als ist, was Wir hatten vor, 0,52. Und nun ist hinzuzufügen eine Enttäuschung Begriff auf diese Regression. Lassen Sie uns also zurückbilden Meilen pro Gallone sowohl auf dem Protokoll der Gewichte und lassen Sie uns tun, q Meilen, viertel Meile Zeit. OK, muss er the-- alles in Ordnung, QSEC. Qsec. Actually-- sorry, was? Lassen Sie mich diese etwas nennen sonst außer model2. Lassen Sie mich dieses model3 nennen. Und so können wir jetzt zusammenfass model3 zu tun. Und so wieder, das ist im Grunde was Sie vielleicht erwarten. Sie haben positive abfangen. Die effektive Steigerung Gewicht negativ. Und die wirksame Erhöhung viertel Meile Zeit positiv ist, aber obwohl weniger als Gewicht. Jetzt intuitiv, können Sie Sinn machen dies damit, denke über den Sportwagen. Es gibt eine sehr schnelle Beschleunigung, eine sehr kurze viertel Meile Zeiten. Sie sind auch gehen, um mehr Gas zu verwenden, wohin vernünftigere Autos gehen langsamer Beschleunigung haben, höhere viertel Meile Zeiten und verbrauchen weniger Gas ,, so höhere Meilen pro Gallone. Groß. Und jetzt ist es Zeit, Plotten etwas wie dieses. Lassen Sie uns also do-- so kahl Knochen wir tun können plots-- weil ich diese Daten Rahmen befestigt before-- können wir nur tun, Grundstücke, Gew mpg. Machen Sie dieses ein bisschen größer. Dort, im Grunde haben wir einen Streudiagramm, aber die Punkte sind irgendwie schwer, sich auf diese zu sehen. Ich weiß nicht, was die ohne weiteres erinnern Syntax ist für die Änderung der Grundstücksgrenze. Also ich denke, das wird eine gute Zeit zu bringen, es ist ein sehr schönes eingebaute Hilfe Komponenten, Funktionen Hilfe Anführungszeichen Namen. Wir werden bis im Grunde bringen alles, was Sie möchten. Ich denke, ich werde tatsächlich tun Typ gleich p für Punkte Parzellen. Hat das etwas ändern? Und nein, nicht wirklich. Gut. Aus irgendeinem Grund, wenn ich das tat auf meinem eigenen Computer eine Weile her, alle Streupunkte waren viel klarer. Jedenfalls sind die Scatter Art sichtbar? Da ist man da. Einige gibt es, einige gibt. Sie können eine Art sehen, wie sie, nicht wahr? Wenn wir also eine Ausgleichsgerade hinzufügen zu dieser Handlung hier, die ein bisschen kahl ist bones-- lassen Sie mich ein bisschen schöner. Haupt gleich gegenüber dem Gewichts. Meilen pro Gallone. Auch hier können Sie sehen, wie nützlich optionale Argumente sind hier mit auch nicht mit, um die Dinge in einem setzen bestimmten Reihenfolge mit Tastatur Argumente wenn Sie Grundstücke, da haben diese nehmen eine Menge von Argumenten. Xlab gleich Gewicht, Gewicht, Tonnen. Gut. OK, ja, dieses Gerät ist ein bisschen nervig. Aber Sie Art von da oben sehen können, es gibt einen Diagrammtitel auf der Seite. Hier drüben there's-- auf der Unterseite Hier gibt es Achsenbeschriftungen. Ich erinnere mich nicht ohne weiteres was die Befehle ars-- Was sind die Funktionen zur Steigerung die Größe dieser Etiketten und Titel, aber sie sind da. Und so, wenn wir wollen fügen Sie die am besten passende Linie, wir etwas like-- ich tun haben die Syntax hier oben geschrieben. So erinnern wir uns nur hinzufügen Modell war mpg, Gewicht, mtcars. Und so, wenn ich wollte, um eine beste Passform hinzufügen Linie, konnte ich a, b Linienmodell zu tun. Und Boom, haben wir eine Ausgleichsgerade. Es ist ein bisschen schwer, wieder zu sehen. Ich bin ganz traurig über die technologische Schwierigkeiten. Aber es läuft grundsätzlich oben links nach unten rechts. Und wenn die Waage waren größer, man konnte sehen, dass der Schnittpunkt ist, was du kannst finden von den Auswertungsstatistiken wenn Sie Typenübersicht Modell. OK, so dass ich hoffe, dass jeder bekommt, so etwas wie ein Gefühl dafür, was R ist, was es ist gut für. Man könnte viel schöner als Grundstücke zu machen diese auf Ihrer eigenen Zeit, wenn Sie möchten. So ausländischen Funktionsschnittstelle. Dies ist etwas, das nicht normalerweise im Einführungsvorträge abgedeckt oder Einführungs alles für r. Es ist nicht wahrscheinlich, dass Sie gehen, um es brauchen. Allerdings fand ich es sinnvoll, in meine eigenen Projekte in der Vergangenheit. Und es ist nicht gut Tutorial für die es online. Also ich werde einfach eilen Sie alle über diese und dann bist du frei, zu gehen. Und so ist die ausländische Funktionsschnittstelle ist es, was Sie verwenden können, zu rufen, um zu sehen, Funktionen mit einem R. Intern R ist gebaut auf C R Arithmetik ist einfach C 64-Bit-Fließkomma-Arithmetik, was ist der Typ double [unverständlich]. Und möchten Sie vielleicht zu tun dies für eine Reihe von Gründen. Zum einen ist R interpretiert, ist es nicht nach unten in Maschinencode kompiliert. So dass Sie schreiben können Sie Ihre inneren Schleifen in C und dann bekommen der Vorteil der Verwendung R. Wie es ist ein bisschen bequemer als C. Es hat eine bessere Grafik Einrichtungen und so weiter. Und während noch in der Lage zu bekommen, Höchstgeschwindigkeit aus den inneren Schleifen, Das ist, wo Sie es wirklich brauchen. Wiederverwendung vorhandener C-Bibliotheken, das ist auch wichtig. Wenn Sie etwas C-Bibliothek für wie, Ich weiß nicht, Fourier-Transformationen, oder einige sehr Archaikum Statistiken Verfahren verwendet in der Hochenergie-Astrophysik oder so etwas, ich weiß nicht. Hochenergie-Astrophysik ist nicht einmal ein Think, denke ich. Sie können jedoch, dass, anstatt zu tun eine native R-Anschluss von ihnen zu schreiben. Und am the-- wieder, wie wenn Sie schauen in den meisten R Standardbibliotheken, auf den Einbauten sind die Einbauten gehen, um die Fremd Funktion nutzen Schnittstelle sehr umfangreich. Sie werden Dinge wie Fourier haben transformiert oder Berechnen von Korrelations Koeffizienten in C geschrieben, und sie werden einfach nur R-Wrapper um sie herum. Die Schnittstelle ist ein etwas schwierig. Ich denke die Schwierigkeit liegt in einem übertrieben Viele der Befehle finden Sie. Aber dennoch ist es ein wenig verwirrend. Und ich habe nicht in der Lage finden Sie ein gutes Tutorial für sie, so, das ist es jetzt. Auch diese ganze Segment ist mehr für den späteren Gebrauch auf. Mach dir keine Sorgen Kopier alles bis jetzt. So der folgenden Anleitung sind für Unix-ähnliche Systeme, Linux, BSD, OS X. Ich weiß nicht, Wie das funktioniert auf Windows, aber bitte nur nicht, tun Sie Ihre Abschlussprojekt auf Windows. Sie wirklich nicht tun wollen. Unix ist viel besser Satz up für Casual-Programmierung. Also, im Grunde fremden Funktionsschnittstelle. Wenn Sie ein C schreiben wollen Funktion zur Verwendung mit R, es muss alles nehmen Argumente Zeiger. Also für Einzelwerte, dies bedeutet, dass es auf den Wert zeigte. Für Arrays, ist dies ein Zeiger auf das erste Element, das ist das, was Arraynamen tatsächlich bedeuten. Auch dies ist etwas, das Sie haben sollten ziemlich komplett nach unten, nachdem S. fünf. Array-Namen sind nur Zeiger zu dem ersten Element, Die Fließkommatyp ist doppelt. Und Ihre Funktion muss leer kommen. Die einzige Möglichkeit, dass er tatsächlich sagen, R, was passiert ist durch Modifizieren des Speichers, der R gab um es durch die Fremdfunktion Schnittstelle. Also habe ich das geschrieben Beispiel hier ist das eine Funktion, die Benutzung berechnet Skalarprodukt zweier Vektoren. Es nimmt zwei Argumente, vec1, vec2, Welches sind die Vektoren selbst, und dann n, die eine Länge, weil wieder, R hat in [unverständlich] errichtet, um herauszufinden, die Länge von Vektoren, aber C nicht. In C wird Vektoren eine beliebige abgegrenzten Teil des Speichers. So, wie Sie können Berechnung Punktprodukte wird nur dieser Parameter aus auf Null und dann durch iterieren von 1 bis n Star, weil n ist ein Zeiger auf die Länge, nur etwas hinzufügen Diese out-Parameter. Und es kann eine gute Übung wenn Sie tun werden Diese zwei separate C-Funktionen zu schreiben. Einer von ihnen has-- eines davon nur nimmt die Argumente und die Arten dass sie gewöhnlich in C liegen So dauert es eine Array Argumente Zeiger. Aber Einzelwertargumente wie n, es dauert nur als Werte durch Kopieren, ohne Zeiger. Und dann tut es nicht [Unverständlich] out-Zeiger. Und dann kannst du eine andere, im Grunde Wrapper-Funktion, die im Grunde verarbeitet die Anforderungen der ausländischen Funktion Schnittstelle für Sie. Die Art, wie Sie dies in R nennen, ist, einmal haben Sie Ihre Funktion in C geschrieben, Sie cmd shlib R, R geben Befehls Shared Library, foo Punkt c, oder was auch immer Ihre Dateiname ist, und das OS Oberfläche nicht in der R-Anschluß. Und dies wird eine zu erstellen Bibliothek namens foo dot so. Und dann können Sie diesen in laden unser Skript oder interaktiv mit Kommando dyn Punktlast. Dann gibt es eine Funktion in R genannten Punkt c. Dies dauert Argumente, die sind zuerst den Namen der Funktion in C dass Sie anrufen möchten. Und dann alle Parameter dieser Funktion, sie müssen in der richtigen Reihenfolge sein. Sie müssen diese Art verwenden, Zwang fungiert als ganze Zahl, wie Doppel, als Zeichen und als logisch. Und dann, wenn es gibt die Liste, die wiederum ist nur eine zugehörige Array des Parameternamen und die Werte nachdem die Funktion ausgeführt werden. Also in diesem Fall, denn dot prod hat Argumente vec1, vec2 und int n, n aus. Zu Punkt c wir dot prod, der Name der Funktion wir fordern, vec1, vec2, Typ zwingen. Die Länge entweder Vektor, Ich entschied mich für nur vec1 willkürlich. Es wäre robuster zu sagen s Integer min Länge vec1, Länge vec2. Dann einfach als Doppel-Null, weil wir nicht wirklich egal, was in der geht out-Parameter, weil wir wenn er auf jeden Fall Null. Und dann Ergebnisse werden ein sein big zugehörigen Anordnung von im wesentlichen vec1 ist was auch immer, ist vec2 was auch immer. Aber wir sind interessiert an aus, so dass wir, dass raus. Dies ist wiederum ein sehr Spielzeug beispiels eines ausländischen Funktionsschnittstelle. Aber wenn Sie dot berechnen müssen Produkte des massiven Vektoren in Schleifen, oder wenn Sie zu tun haben, etwas anderes in einer Schleife, und Sie nicht möchten, dass auf R verlassen, davon mit einem wenig Overhead tut hinein gebaut, kann dies sinnvoll sein. Wiederum ist dies in der Regel nicht eine einleitende Thema R. Es ist nicht sehr gut dokumentiert. Ich bin gerade darunter, weil Ich fand es nützlich, in der Vergangenheit. Also, schlechte Praktiken. Ich erwähnte, dass es eine for-Schleife in der Funktion. Im Allgemeinen sollten Sie nicht, in die Sprache, die sie nicht verwenden. Je nachdem, wie R implementiert Iteration intern, kann es langsam sein. Sie gerade auch hässlich aussehen. R Griffe Vektoren sehr schön, so oft brauchen Sie nicht, es zu benutzen. Dann können Sie in der Regel ersetzen Sie eine Vektor oft Mit diesen Funktionen aufgerufen Hoch Bestellfunktionen, Karte, Reduzieren, Finden oder Filter. Ich werde nur einige zu geben Beispiele dafür, was diese zu tun. Karte ist eine Funktion höherer Ordnung, weil dauert es eine Funktion als Argument. So können Sie es geben, eine Funktion, Sie können es ein Array, und es wird die Funktion anzuwenden zu jedem Element des Arrays und gibt das neue Array. Reduzieren Sie, im Grunde Ihnen es ein Array, es wird Ihnen eine Funktion, die zwei Argumente übernimmt. Es wird die Funktion zuerst die Anlege erste Argument mit einigen Starterwert. Dann zu diesem Ergebnis in der zweiten. Anschließend zu diesem Ergebnis im dritten dann zu diesem Ergebnis in der vierten. Und dann zurückkehrt, wenn es bis zum Ende gelangt. So zum Beispiel, wenn Sie wollen berechnen die Summe aller Elemente, in einem Array, als Sie vielleicht rufen reduzieren mit [unverständlich] zu reduzieren einen Zusatz Funktion, wie func a, b, bringe ein plus b. Und starten Sie dann einen Wert von 0. Und all dies, können Sie sie zu finden in der R-Dokumentation beschrieben, in jedem Lehrbuch über funktionalen Programmierung. Es gibt auch diese Klasse von Funktionen aufgerufen gelten Funktionen, die ich don't-- sie ein wenig schwer zu erklären, aber wenn Sie in aussehen [unverständlich] gebucht, dass ich zu Beginn zitiert, erklärt er ihnen ziemlich gut in seinem Anhang über R-Programmierung. Mehr über Praktiken, Anhängen an Vektoren. Ja? Ich glaube, ich sollte, dass zu korrigieren. In diesem ersten Zeile, vec Pfeil, dass Pfeil nicht da sein sollte. Sie können auf einen Vektor zuordnen, wieder, indem nehmen seine Länge plus 1 und Zuweisen einen Wert zu. Das wird zu erweitern, die den Vektor, oder Sie kann vec equals c, vec newvalue zu tun. Auch wenn Sie mit C verwenden einem Argument als ein Vektor, die resultierende Hierarchie wird abgeflacht. So dass Sie einfach nur ein Vektor- das ist um 1 erweitert. Nie tun. Der Grund, warum Sie sollte das nicht das ist. Wenn Sie einen Vektor zuordnen, es insofern einen gewissen Teil des Speichers. Wenn Sie diesen Vektor-Größe zu erhöhen, es hat, um den Vektor umverteilen irgendwo anders. Usw. Neuzuweisung ist recht teuer. Ich will nicht in die Details, wie gehen Speicherverteiler implementiert sind auf Ebene des Betriebssystems, aber es dauert viel Zeit um einen neuen Teil des Speichers zu finden. Und auch, wenn Sie Neuzuweisung viel, viel der immer größer Brocken, Sie am Ende mit einem so genannten Speicherfragmentierung, wobei der verfügbare Speicher in viele kleine Blöcke aufgeteilt im Speicher Verteiler Gesichtspunkt. Und es wird immer schwieriger Speicher für andere Dinge zu finden. Anstatt also, wenn Sie dies tun müssen, wenn, Sie, um einen Vektor von einem Ende Wachsen brauchen zum anderen, anstelle von Anhängen an das ständig, sollten Sie im Voraus zuweisen es. Vec Pfeil, Vektorlänge entspricht 1.000, oder was auch immer. Und dann müssen Sie nur zuweisen können um den Vektor der Werte ein eine Zeit, nachdem Sie es einmal vergeben habe. Ich lief in diesem, wieder, mein Sommerjob als ich das Schreiben NRA Differenz Gleichungslöser. Nicht symbolischen Zahlen. Die Idee ist, dass, sobald Sie haben ein Wert für Ihre Lösung, Dieses verwenden Sie, um das nächste zu berechnen. Also meine natürlichen naiven Neigung war in Ordnung zu sagen, also werde ich mit einem Vektor zu starten das ist ein wesentlicher Wert. Berechnen Sie aus, dass der nächste Wert das geht auf meinen Lösungsvektor, und fügen Sie das. Etwas anderes zu erstellen, hängen Sie, dass. Es ging sehr, sehr langsam. Und wenn ich dies erkannt und ich mein System verändert anhängt zu diesem Vektor wie 10.000 bis 100.000 mal, nur vor, eine Zuweisung eines Vektors und nur mit dem Laufen. Ich habe mehr als 1000-fach beschleunigen. Also das ist eine sehr häufige Falle für R-Programmierung. Wenn Sie für den Aufbau einer Vektor- Stück für Stück, vorge ordnen es. Ein weiteres gemeinsames Reise up-- dies ist meine letzte Rutsche, nicht worry-- ist die Fehlerbehandlung. R, um ehrlich zu sein, nicht wirklich das sehr gut. Es gibt viele Probleme, die auftauchen können. Zum Beispiel, wenn Sie ein Array erhalten oder einem Vektor aus einem Funktions dass Sie erwarteten ein Einzel Wert herkommen, oder umgekehrt, und Sie passieren, dass in eine Funktion, Sie schrieben erwartet einen einzelnen Wert, das kann ein Problem sein. Bestimmte Funktionen null zurück, wie zu tun, sagen wir, Lesen aus einem nicht vorhandene Schlüssel in einer Liste. Aber null ist nicht wie C wo, wenn Sie versuchen, zu lesen aus einem alten Zeiger, [unverständlich] auf den Zeiger Null, es ist nur seg Fehler und wenn Sie in Ihrem Debugger sind es sagt Ihnen genau, wo Sie sind. Stattdessen null wird Funktionen do-- unvorhersehbare Dinge zu tun wenn sie übergeben null. Wie, wenn Sie übergeben max null sind, es gebe Ihnen negativ unendlich. Und so, ja. Und so geschah dies einmal zu mir, als ich verändert eine Reihe von Feldern in meiner Liste Struktur einmal ohne an anderer Stelle sie zu ändern als ich von ihnen zu lesen. Und dann bekam ich alle möglichen Zufalls Unendlich Ergebnisse tauchten und ich habe keine Ahnung, woher sie kamen. Und leider gibt es keine wirkliche R strikten Modus wo man, wenn etwas zu sagen sieht aus wie könnte es ein Fehler sein, nur dort zu stoppen, so dass ich sein kann diszipliniert und zu fixieren, dass. Jedoch gibt es etwas genannt Stop, wenn nicht. Dies ist äquivalent zu C geltend zu machen, wenn Sie darüber gesprochen habe. Ich glaube nicht, dass C durchsetzen ist ein Vortrag Thema, aber Ihr Stimmführer vielleicht drüber gegangen. Und zu stoppen, wenn nicht grundsätzlich nimmt jede Prädikat, so dass jede Aussage, dass kann wahr oder falsch sein. Und wenn es falsch ist, stoppt er sein Programm. Es sagt Ihnen genau, was Sie säumen waren und welche Bedingung fehlgeschlagen. Und dies sehr nützlich, zum Beispiel, sanity Prüfung, Funktionseingänge. Also, wenn Sie eine Funktion haben und Sie können erwarten, sagen wir, Sollten Sie mir einen Termin geben, möchte ich die Daten nur ein Vektor der Länge 1 sein und irgendwo zwischen 1 und 31. Und wenn nicht, ich weiß, versuchen Sie es erneut. Und ich wählen, um es vor dies zu stoppen hat zufällige Folgewirkungen mit Code , dass es schwieriger ist, durch zu verfolgen. Also das ist eine mögliche verwenden für Stopp, wenn nicht. Wie auch immer, auf OK. Also das ist das Ende. Vielen, vielen Dank für Ihr Kommen. Ich bin ein blutiger Anfänger auf diese. So leid, wenn dir langweilig ist oder verwirrt oder was auch immer. Ich bin glücklich, Fragen per E-Mail nehmen bei connorharris@college.harvard.edu. Dies gilt auch für alle gerade so leben oder höher auf. Außerdem bin ich auch nicht a TF, bin ich auch sehr bereit, als inoffizieller dienen Ratgeber für alle, die es Verwendung von R in einem Abschlussprojekt. Wenn Sie möchten, dass, dann nur um Ihre TF sprechen und dann schreiben Sie mir eine E-Mail, so Ich weiß, was Sie gerade arbeiten und so kann ich einrichten Sitzung mal mit Ihnen, wenn Sie wollen. Also noch einmal, ich danke Ihnen sehr. Ich hoffe, dass es Ihnen gefallen hat. ZIELGRUPPE: [unverständlich]. CONNER HARRIS: Natürlich. Publikum: Was für ein Projekt wäre ein CS Studenten verwenden R für? CONNER HARRIS: Also, wenn Sie nicht tun, etwas, das rein in Data Mining ist, zum Beispiel, und es gibt viele Dinge, Ihnen, dass mit den Daten tun konnte, Mining und maschinelles Lernen. Vielleicht möchten Sie R für den Einsatz Bestandteil von etwas. Ich brachte, ursprünglich, am Beispiel der, wenn Sie schriftlich eine Website sind und Sie automatisiert ausgeführt werden soll statistische Analyse von Ihrem Server Protokolle zu einem bestimmten Zeitpunkt jeden Tag, das könnte etwas, das ist sein sehr einfach, in nur einer kurzen tun R Skript, das Sie planen können jede Nacht laufen, zum Beispiel. Und ich bin sicher, wenn es gibt einen Grund, Sie würden möchte Statistiken oder Grafikfunktionen und haben diese Lauf automatisch statt der mit zu interagieren mit den Dingen in Excel, zum Beispiel ist etwas möchten Sie vielleicht R für den Einsatz. So haben weitere Fragen, bevor ich gehe? Nein? Na gut, na ja, wieder, danke Dank für Ihr Kommen.