CONNOR HARRIS:まだ私 いくつかのエキサイティングなビデオを考えます プロのコンサルタントによって生成 それは、R、その作品に多くを使用しています。 ナレーター:統計の背後に何が、 分析、および視覚化 今日の最も明るいデータ科学者 およびビジネスリーダーは頼ります 強力な意思決定を行うには? あなたはいつもそれを見ていない可能性があります。 しかし、それはあります。 これは、オープンソースはr--と、Rと呼ばれています 統計的なプログラミング言語 そのデータの専門家の世界 すべてのための使用に対する 社会の広範なマッピングから オンライン・マーケティング動向 金融や気候の開発に 我々の経済を後押しモデル やコミュニティ。 しかし、正確にRは何ですか そしてここで、Rは、始めたのですか? まあ元々、Rが開始しました ここでは2つの教授と 誰がより良い統計を望んでいました 学生のためのプラットフォーム。 そこで、彼らはモデル化されたものを作成しました 統計的言語S.後 彼らは、多くの他の人と一緒に、 上の作業とRを使用したまま、 Rと発見のためのツールを作成します Rのための新しいアプリケーション毎日。 これのおかげであります 世界的なコミュニティの努力、 Rは何千もの成長を続け 構築されたユーザーが作成したライブラリの Rの機能を強化すると クラウドソースの品質の検証 最も認識のサポート あらゆる分野での業界リーダーこと R.は、素晴らしいですどの使用していますので、 Rは、それが何をするかで最高です。 すぐに専門家を出芽し、 簡単に解釈する、との対話、 その急速示すデータを可視化 世界的なRのユーザーの成長のコミュニティ どのようにオープンソースを参照してください Rは形を続けて 統計の将来 分析およびデータ科学。 CONNOR HARRIS:OK、素晴らしいです。 だから、自分のプレゼンテーション もう少し冷静になります。 それは多くのことを含まれません 刺激的な背景音楽。 あなたがビデオで見たようにしかし、Rは一種であります 汎用のプログラム言語。 しかし、それはほとんどが作成されました 統計処理のために。 だから、統計のために設計されています、 データ分析のために、データマイニングのために。 そして、あなたは多くのでこれを見ることができます デザイン選択そのRのメーカー 作られました。 これは、大部分のために設計されています いない人 プログラミングの専門家、人 単にプログラミングを拾っています 側にそのように、彼らは自分の仕事を行うことができます 社会科学や統計で または何でも。 それは非常にたくさん持っています Cからの重要な相違点 構文とパラダイムしかし、 それは広く同じであるを使用します。 そして、あなたはかなり感じるはず すぐさま家でずっと。 これは、命令型言語です。 それについてはあまり心配しないでください あなたは用語がわからない場合。 しかし、違いがあります 命令型、宣言型との間に、 機能。 命令型は、ちょうどあなたが作る意味します 基本的にコマンドですステートメント。 そして、通訳または コンピュータはそれらを一つずつに従います。 それは弱く型付けされています、あります R.には型宣言ません そして、ライン 異なるタイプ間 もう少し緩いよりも それらは、例えば、Cです。 そして、私はあると述べているように 非常に大規模な施設 グラフのために、統計のために データマイニングのための分析、。 これらは両方に組み込まれています 言語と、ビデオが言ったように、 そのサードパーティのライブラリの数千人 あなたは無料でダウンロードして使用することができます 非常に緩いライセンス条件。 そこで一般的には、私がお勧めします あなたは、これら二冊の本を見ていること あなたはR.一つで作業するつもりなら 彼らの公式R初心者のです ガイド。 それはによって維持さです Rのコア開発者 あなたは無料、それを再度ダウンロードすることができます そこにリンクしているページで充電し、合法的に。 これらのすべてのスライドは行くつもりです インターネット上のアップ、CS50のウェブサイトで この後に行われます。 そう必要はコピーしないように 必死に物事ダウン。 他方であります COSMA Shalizi教科書、 で統計教授は誰なのか カーネギーメロン、高度なデータと呼ばれます からの分析 ビューの基本ポイント。 これは、主にRの本ではありません。 これは、統計の本だと それはデータ解析本です。 しかし、それは人々に非常にアクセス可能な人 統計知識の少量を持っています。 私は正式なコースを取ったことがありません。 私はビットと作品を知っています 様々な同盟科目から 私はコースを撮影したもの。 そして、私は理解することができました それ完璧に。 すべての数値が与えられています RにこれらはRに作られています そして彼らはまた、コードのリストを持っています 各図の下にあなたを伝えること どのようにRコードで各図を作ります。 そして、それは場合に非常に便利です あなたがエミュレートしようとしています あなたは本の中で参照してくださいいくつかの図。 そして再び無料ダウンロード 申し訳ありませんstat.cmu.edu/cshalizi/、 それがチルダcshaliziをスラッシュする必要があります。 私はそれを修正することを確認します 公式スライドが上がるとき。 ちょうどである/ ADAfaEPoV 本のタイトルの頭文字。 だから、一般caveats-- R 機能をたくさん持っています。 私はカバーできるようにするつもりです 物事の多くの面。 セミナーのも最初の部分 データ・ダンプのようなものになるだろう。 私はそれについて非常に申し訳ありません。 基本的に、私はするつもりです たくさんのことをご紹介 右バット、行きます できるだけ早く。 そして、我々はを取得 ある面白い部分、 私はあなたにすべてを表示することができますデモ 我々は、画面に語られていることを。 そして、あなたは自分で遊ぶことができます。 だから、多くのがあるように起こっています 技術的なものはここに投げ。 すべてのことを下にコピーする心配しないでください。 ので、あなたが得ることができるすべての 後でCS50のウェブサイト上のもの。 そしてBは、それは本当に重要ではありません スライドからこれを記憶します。 それはあなたが得ることがより重要です それにいくつかの直感的な施設 それはちょうど遊んでから来ています。 なぜRを使うのか? 基本的には、そのプロジェクトを持っている場合 マイニング大きなデータセット、データを伴います 可視化は、 あなたがしている場合はRを使用する必要があります 複雑な統計分析を行って、 それは、Excelにするのは困難であろうが、 例えば、希望 また、もgood--します あなたは統計をやっている場合 自動化されています分析。 のは、あなたがウェブサイトを維持しているとしましょう​​。 そして、あなたは、サーバーのログを読みたいです 毎日いくつかのリストをコンパイルし、 トップの国のようなもの ユーザーは、から来ています どのくらいのいくつかの要約統計 彼らはあなたのウェブサイトまたは何に費やしています。 そして、あなたは毎日、これを実行したいです。 今、あなたがExcelでこれをやっている場合は、 あなたは、あなたのサーバーログに移動する必要があると思います それをインポートします Excelデータのスプレッドシート、 すべて手動で分析を実行します。 Rを使用すると、一つだけのスクリプトを書くことができます。 毎日実行するようにスケジュール お使いのオペレーティングシステムから。 そして、午前2:00に毎晩、 または、実行するようにスケジュールするたびに、 それはあなたの目を通すます その日のためのインターネットのトラフィック。 そして次の日にすることにより、あなたはよ この光沢のある、新しいレポートを持っています または何のすべてと あなたが尋ねた情報。 だから、基本的にはRは、Ciscoのためであります シスコの分析対プログラミング。 予備的に行われています。 それでは、実際のものに取得してみましょう。 だから、3つの実があります 言語の種類。 数値型があります。 違いのようなものがあります 整数と浮動小数点、 しかし、本当に。 文字があります 文字列であるタイプ。 そして、論理があります ブール値であるタイプ。 そして、あなたは型の間で変換することができます 数値としてこれらの機能を使用して、 論理などの文字、など。 あなたが呼び出した場合、例えば、 文字列の数字として、 それは、その文字列を読み取るしようとします 数、同じ方法 そのa2iやscanfんし、Cの場合 真または偽の数字としてあ​​なたを呼び出します それは、1または0に変換します。 あなたは文字として呼び出す場合 何にもそれはよ それを変換します 文字列表現。 そして、ベクトルと行列があります。 だから、ベクトルは基本的に 1次元配列。 彼らは、私たちが列を呼んでいるものです C.行列、2次元配列。 そして、より高いです 次元配列のことができます。 3、4、5次元を持っているか、どんな 数値の文字列の、 論理値。 また、あるリストを持っています 連想配列のようなもの。 私は、そのビットになるでしょう。 だから、一つの重要な事柄 それはRの人々をトリップ 全く存在しないことです 本当、純粋な原子タイプ。 間には実際の区別はありません 数、数値のように、 そして、数値のリスト。 数値は実際にあります 長さ1のベクトルと同じ。 そして、これは数を持っています 重要な意味。 一つは、それはあなたが行うことができることを意味 非常に簡単なものを伴います ベクトルに番号を追加することなどです。 Rは、基本的には図意志 アウトあなたはそれによって何を意味します。 そして、私は2番目のものになるでしょう。 また、方法がないことを意味し タイプの程度にchecker-- そのようなこと、何か 教えてr--の中に存在します あなたは、単一の値で渡されてきたとき、 それは、配列、またはその逆を期待するとき。 そして、それはいくつかの奇妙を引き起こす可能性があります ときに私が走ったトラブル 私は私の夏の仕事中にRを使用していました。 そして、何の混在型の配列はありません。 だから、配列があったことはできません 最初の要素は、私は知らないが、 文字列 "ジョン"と 2番目の要素は数42です。 あなたがそれをしようとした場合は、取得します すべては単なる文字列に変換されます。 だから我々は文字列ジョン、文字列42を有しています。 最もfeatures--そう珍しい統語 Rの構文はCに非常に似ています いくつかの重要な違いがあります。 タイピングは非常に弱いです。 だから、何の変数宣言はありません。 割り当ては奇妙なを使用しています エラーオペレータハイフン未満。 コメントはハッシュマークです。 私は今日は、我々はハッシュタグを呼び出すと思います それは本当にないのですけれどもありませんaccurate-- ダブルスラッシュ。 モジュラー残基は%%記号です。 整数の除算は、%/%です それが投影だときに非常に読み難しいです 画面上にアップ。 あなたは、の範囲を得ることができます コロンと整数。 だから、2,5はあなたにベクトルを与えます すべての番号2〜5の。 配列は一インデックス化され、 これはネジ多くの人 彼らはより多くのならアップ 一般的なプログラミング言語、 ほとんどのCのような 物事はゼロインデックス付きです。 繰り返しますが、これはRの遺産 ないようにするための言語として、 プロのプログラマは入って来。 あなたは社会学者をしている場合、または 経済学者か何か あなたが使用しようとしています 基本的には補助剤としてR あなたのより重要に プロの仕事、 あなたが見つけるつもりです もう少し自然なワンインデックスします。 あなたがカウントを開始するので 日常生活の中で1、0ありませんで。 forループ、これは次のようになり PHPのforeach構文、 あなたが買ってあげるします かなりすぐin--学びます。 どちらがベクトルの値のためのものであり、 あなたが値を持つことを行うことができます。 聴衆:講義に来ています。 CONNOR HARRIS:ああ、それはです 優れた、講義を思い付きます。 聴衆:割り当て、それは 右から左に指すようになって? CONNOR HARRIS:右から左に、はい。 あなたは上の値と考えることができます 変数に押し込んだ右側 左に。 聴衆:[OK]をクリックします。 CONNOR HARRIS:そして最後に 関数の構文は少し奇妙です。 あなたが割り当てられ、関数fooという名前を持っています このキーワード関数に続き、 その後、すべての引数とすることにより その後の関数の本体。 再び、これらの事はよいです 少し奇妙に思えます。 彼らは後に第二の天性になるでしょう あなたは少しの言語で動作します。 ベクトルだから、道 あなたはベクターを構築 キーワードであるあなたのタイプCは、その後、あります すべての希望する数値または文字列 または何でも。 引数もベクトルで。 しかし、結果の配列は、平坦化されます。 だから、どこの配列を持つことができません いくつかの要素は、単一の数値であります そして、いくつかの要素は配列そのものです。 あなたが構築しようとするのであれば 配列は、最初の要素であった4 第2要素 アレイ3,5は、あなたがよです ただ、4,3,5の三つの要素の配列を取得。 彼らは、混合型にすることはできません。 あなたは、読み取りまたは書き込みをしようとした場合 ベクトルの境界の外 あなたは、NAのAと呼ばれるこの値を取得します これは欠損値を表しています。 そして、これはするためのものです 統計学者のような人 不完全なデータセットで作業しています。 あなたははずの関数を適用した場合 配列に一つだけの数を取ります その後、何を買ってあげることは、あります 関数は、配列の上にマップされます。 だからあなたの関数がのがかかるとしましょう​​場合 数と四角それを返します。 あなたは、配列2,3,5にそれを適用します あなたは何を得るでしょう、アレイ4,9,25です。 そして、それは非常に便利です それはあなたを意味するので 以下のためのループを記述する必要はありません 適用のような非常に単純なことをやって データセットのすべてのメンバーに機能しています。 あなたはどちら大で作業している場合 データセットは、あなたは多くのことを行う必要があります。 バイナリの機能があります エントリごとに適用されます。 私はそれに入るでしょう。 あなたは配列でそれらにアクセスすることができます または角括弧を有するベクター。 だから、ベクトル名角括弧1 あなたの最初の要素を提供します。 ベクトル名角括弧2 あなたの二番目の要素を提供します。 あなたはベクトルに渡すことができます および指標のあなたはよ バックは基本的にサブ要因出ます。 だから、ベクトル名ブラケットCを行うことができますが、2,4 あなたが含むベクトルを取得します 第二及び第四 配列の要素。 そして、あなたがしたい場合だけ 簡単な要約統計量 四分位のようなベクトルの 範囲、中央値、最大値、何でも、 あなただけの概要を入力することができます ベクトル名とそれを出します。 これは本当に便利ではありません プログラミングができますが、演奏している場合 データセットの周りに、それは便利です。 基本的にMatrices-- 高次元の配列。 彼らは、この特別な表記構文を持っています。 取得配列と行列 データで申し訳ありませんが、マトリックスin--満たし、 行数、列数。 いくつかのデータがある場合は、で埋め 配列は、基本的に上から下に行きます 最初。 そして、左から右へ。 そこで、そのような。 そしてRが組み込まれてい 行列乗算、 スペクトル分解、 対角化、たくさんのこと。 あなたは、より高い次元の場合 アレイ、SO 3、4、5、 または任意の大きさ、あなたはそれを行うことができます。 構文は配列の薄暗いあるCに等しく、 その後、ディメンションのリスト。 ですから、4次元配列をしたい場合 寸法4、7、8、9、配列と、 DIMは、c(4,7,8,9)に等しいです。 あなたは括弧を持つ単一の値にアクセス 2番目のエントリカンマ最初のエントリ。 あなたは全体のスライスを得ることができます 行または列の。 この不完全な構文で、それはです ちょうど数コンマまたはカンマ列を行 数。 だからリストは、関連するアレイの一種です。 彼らはここで自分の構文を持っています。 ここでも必死ありません このすべてを下にコピーします。 これは、ちょうどそのように人々 後でスライドを通過 すべての素敵な参考文献でこれを持っています。 そして、これは非常に自然に一度になります 私は実際にデモを歩きます。 したがって、基本的に関連した配列を示しています。 あなたが使用して値にアクセスすることができます リスト名、ドル記号、キー。 だからあなたのリストがfooという名前が付けられている場合、 その後、あなたはそのようにそれにアクセスすることができます。 あなたは全体のキーと値のペアを取得することができます 角括弧インデックスを渡すこともできます。 あなたは存在しないから読み込む場合 キー、あなたはnullを取得します。 これはエラーではないでしょう。 シングは、Rのように行います、です それができるようにnullを指定してはるかに。 そして、これはあなたがしている場合ことを意味します ヌル出ることを期待していません いくつかのリストの読み込みのため、あなたには、いくつかを取得します さらにダウン予測不能なエラー ライン。 これは私に起こった私の 私はRを使用していた夏の仕事 私はどのように特定の変更場所 リストには、一つの場所で定義されていました しかし、後に変化しませんでした それから値を読み取ったコード。 だから何が起こったことは、私がありました このリストの中からNULL値を読み、 関数に渡します、 そして、非常に混乱しています 私は、あらゆる種類のを得たとき アップトリミングランダム無限大 この機能インチ あなたが特定の最大値を適用した場合ので、 または最低限の機能はNULLに、 あなたは無限の値を取得します。 データフレームは、それらがリストのサブクラスです。 すべての値はベクトルです 同じ長さの。 そして、彼らが提示するために使用されています、 基本的には、データテーブル。 この初期化構文があります。 これは、すべて、再び、はるかになります あなたはデモに得るときより明確。 そして、いいところ データフレームは、あなたのことです すべての列に名前を与えることができます そして、すべての行に名前。 そして、そのためには、アクセスさせます それらビット友好。 また、これはどのようにほとんどの機能であります Excelスプレッドシートからデータを読み込みます またはテキストフ​​ァイルから、例えば、 そのデータに読み込みます。 彼らはに入れましょう データフレームのいくつかの並べ替え。 だから、機能をfunctions-- 構文は少し奇妙です。 やはりそれは関数の名前です、 その後、このキーワードの機能を割り当て、 引数のリスト。 だから、いくつかの素晴らしいものがあります 関数がここでどのように機能するかについて。 一つは、あなたが実際に割り当てることができます 特定の引数にデフォルト値。 だから、R1を言うことができます あなたはFOOを言うことができますequals-- R1が何かに等しい関数であります ユーザーが指定した場合、デフォルトで 引数はありません。 そうでなければ、それは彼が入れ何でもです。 そして、これは非常に便利です なぜなら私たちの多くの機能 多くの場合、数十を持っていますか、 引数の数百人。 プロットするための例えばもの グラフやプロット散布図 コントロールの引数を持っています タイトルと軸からすべて 回帰直線の色とラベル。 そして、あなたがしたくない場合 人々は特定作ります これらのすべての単一の1 引数の数百 のあらゆる局面を制御します プロットまたは退行または何、 それは、これらのデフォルト値を持つことがうれしいです。 そして、あなたが実際にすることができます あなたはここに戻って見たように記述します。 または、より良い例を見つけます。 あなたが関数を呼び出すときには、実際にすることができます 引数名を使用して、それらを呼び出します。 だからここの例を示します。 行列のコンストラクタ。 それは3つの引数を取ります。 通常は、データを持っています、 これはベクトルです。 N個の列を有しています 行の数です。 あなたは、Nは列数をcols--持っています。 あなたが入力した場合のものであり、 N個の行に等しいものは何でも N colがどのようなときに等しいです あなたは、この関数を呼び出しています あなたは実際にそれらを逆にすることができます。 だから、最初のN COLおよびN行を置くことができます 第二、それは違いはありません。 だから、ちょっといい機能です。 インポートおよびエクスポートを行いました。 これは基本的に、行うことができます。 書き出す施設もあります。 任意のRはバイナリファイルにオブジェクト そしてその後でそれらを読み戻します。 あなたがやっている場合に便利です 大きな対話型セッションR あなたが保存する必要があります 物事は非常に迅速に。 デフォルトでは、Rは作業ディレクトリを持っています ファイルがに出て書き込まれますことを から読み戻します。 あなたがそれを見ることができます getwg、setdwでそれを変更します。 ここで特に興味深いのは何もありません だから今実際の統計 多重線形回帰をstuff--。 だからいつもの構文 少し複雑です。 モデルは基本的に大きなオブジェクトです。 これは、フィルムに割り当てられます、 これは関数呼び出しです。 最初の要素、Y チルダX1プラス何でも。 ここに私の構文は少し混乱するかもしれません。 私は、この非常に申し訳ありません 標準的な方法です そのコンピュータ科学の本はこれを行います。 しかし、それは少し奇妙です。 したがって、基本的に、それはLMです 括弧、最初の項目 申し訳ありませんvariable--され、依存 変数チルダX1プラス×2プラス しかし、多くの独立 あなたが持っている変数。 そして、これらは、いずれかになります ベクトル、すべて同じ長さ。 それとも、1列になります データフレームのヘッダー あなただけで指定すること 第二引数のデータフレーム。 指定することもできます より複雑な式 あなたは直線的にする必要はありません 1つの従属変数を退行、 または既存のベクター上の1のベクトル。 あなたは、例えば、Aを行うことができます ベクター成分y二乗プラス1 そして、反対のことを退行 いくつかの他のベクターのログ。 あなたはの要約を印刷することができます 呼ばれるこのコマンドを使用して、モデル ただ要約モデルを括弧summary--。 再び私は明確にすべき何か他のもの。 修正されてしまいます何か他のもの スライドは、インターネット上に行くとき。 あなただけ計算したい場合 単純相関 あなたは相関ベクトルを使用することができます 1ベクトル2機能コア。 メソッドはデフォルトで ピアソン相関。 それらはあなたが行うことができます標準的なものです。 そこもスピアマンと Kendell相関 いくつかの多様です 順位相関。 まあ、彼らは製品を計算しません。 ベクトル自体の間の瞬間、 しかし、ベクトルの順位注文。 私は後で説明します。 聴衆:クイック質問 CONNER HARRIS:確かに。 聴衆:だから、計算しています 単純な相関を行うために あなたは、統計があることを前提としてい 相関の意義? CONNER HARRIS:あなたがする必要はありません。 LMは、基本的にはマシンです。 それは二つのことになります それが吐き出すます 最良適合線のための係数。 また、標準レポート これらの係数でのエラー。 であるようにそしてそれは、あなたを教えてくれます 統計学的に有意なインターセプト または0との違い。 最善の傾きであります フィットライン統計的に ゼロとは異なる、エトセトラ。 だから、私が思うに、何を負うものではありません あなたの質問に対する最良の答えです。 OK。 あなたがすべきPlotting--ので、主な理由 多重線形回帰のように、Rを使用します。 基本的にすべての言語 そのためのいくつかの施設があります。 そしてのための正直Rの構文 回帰は少し難解です。 それは本当に輝いてどこでもプロットです。 働き者機能はプロットであります それは2つのベクトルxとyを取ります。 そして、楕円は非常にの略 オプションの引数の数が多いこと タイトルから色にすべてをコントロール さまざまな線や様々なポイントの、 プロットのタイプに。 あなたが散乱を持つことができます プロットやラインプロット。 [聞こえない] 2ベクトル 同じ長さの。 あなたは添付して、これを先行することができます スクリプト内のデータフレーム。 そして、これはあなただけの列を使用できるようになります 代わりに、別個のベクターのヘッダ。 あなたは最高のフィットラインとローカルを追加することができます グラフに回帰曲線。 これらのコマンドは、リストされています ここで、ABラインとライン、 デフォルトでは、これらが取得します ポップアップウィンドウに書き込ま それがことを前提としているため あなたが対話的にRを使用しています。 あなたがいないなら次のことができます その2つのファイルを書き込みます あなたが好きな、本当に任意の形式になっています。 申し訳ありませんが、私はちょうど実現誤植があります。 あなたが開く場合 別のグラフィックデバイス あなたはPNGまたはと呼ばれるこの機能を使用することができます JPEGまたは他の画像形式がたくさん。 そして、あなたはにグラフを書くことができます どのようなファイル名は指定します。 あなたがuse--する必要があることをキャンセルするには 私はslide--でこれを書いていません しかし、DEVと呼ばれる機能があります そのオフドットは引数を取りません。 その後、施設があります 3Dプロットのための 輪郭のためのプロット あなたがしたい場合は 2つの独立変数のグラフ。 私は今、これらの中に取得することはできません。 一部もあります アニメーションのための施設 それらは通常、 第三者によって維持。 私はRのグラフにアニメーションを行っています、 私はこれらのサードパーティを使用していません ライブラリ。 だから私は本当に証明することができません 彼らはどのように良いに。 何がしたい場合私はお勧め Rを使用してアニメーションを作るために あなたはすべてを書き出すことができますされています アニメーションのためのフレーム そして、あなたは使用することができます 第三者program-- 代表的なものはFFmpegのと呼ばれています またはImageMagick--はステッチします 1アニメーションにあなたのすべてのフレーム。 だから、デモのための時間。 ですから、システムのように、あらゆるUnixを使っている場合 これはLinuxのBSDですが、誰が、BSDを使用しています。 OS Xは、ターミナルウィンドウを開き、 コマンドプロンプトでタイプR。 あなたがRのスタジオを持っている場合、または また働くような、。 Windowsユーザーのためにあなたがすべきです スタートメニュー内にRを見つけることができます。 それは何かと呼ばれるべきです どんなR x64の3点などです。 そこにそれを開きます。 だから今ちょうど私を聞かせて ターミナルウィンドウを開きます。 すべての権利、検索。 聴衆:コマンドスペース CONNER HARRIS:コマンドスペースは、ありがとうございました。 私は普通のMacを使用しません。 ターミナルは、新しいウィンドウが表示されます。 新しいウィンドウが設定され あなたが得る必要がありますので、R.、基本 ウェルカムメッセ​​ージ、次のようなもの。 だから私は、対話的にRを使用しています。 また、当然のRスクリプトを書くことができます。 基本的にスクリプトを実行 全く同じ方法で あなたがコンピュータの前に座っていた場合 一度にすべての行1を入力。 それでは、ベクトルを作ることから始めましょう。 矢印C 1、2。 1、2、4。 [OK]を、確認してください。 私は、フォントサイズを大きくすることができます。 聴衆:コマンドプラス CONNER HARRIS:コマンドプラス。 コマンドプラス。 すべての権利、それがどのようにですか? 良い? OK。 それでは始めましょう ベクトルリストを宣言する。 、矢印、C 1,2,4を実行してください。 私たちは見ることができます。 そこにブラケットを心配しないでください。 あなたがプリントアウトした場合、ブラケットはそうです 非常に長い配列、我々はあなたがどこにいることができます。 私場合は、1つの例は以下のようになります わずか200の範囲2をしたいです。 私は非常に印刷した場合 長い配列、括弧 ちょうどので、私は続けることができています トラックどのインデックスの 私が探していた場合、私たちは上にいます この視覚を通して。 だからとにかく、私たちは持っています。 だから私は、その配列が相互作用する前に言いました 非常にきれいで、例えば、 このような単項演算。 だから、私はと思うもの 私はプラス1を入力した場合のですか? うん。 右、今私が作ってあげます この別の配列。 それでは、B、C 20,40、80を言ってみましょう。 それで、あなたはどう思いますか このコマンドは何だろうか? 要素を追加します。 だから基本的には、それはそれが何をするかです。 だから、これはかなり便利です。 だから私は方法については、私はこれを行います。 C言語 、6回1〜10、のは言わせています。 だから私は見るために何をしたいです 含まれている、あなたは思いますか? だから、6のすべての倍数。 さて、あなたはどう思いますか 私はこれを行う場合に起こるのだろうか? 私はこのビット明確に、C、Cを作ってあげます。 だから何が起こるか、あなたを行います 私はこれを行う場合は、と思いますか? プラスC。 [聞こえません] 聴衆:エラーかのどちらか ちょうど最初の3つの要素が追加されます。 CONNER HARRIS:全くありません。 これは、我々が得たものです。 何が起こるかというと短いです アレイは、循環ました。 だから我々は124、124、124を得ました。 うん。 そして、基本的に、あなたが見ることができます この動作の前に、プラス1、 この動作のサブクラスとして 最短配列がちょうど数であります 1つの要素配列です1、。 私は、すべてのベクトルを言って 代わりに、アレイの時間、 それだから何R ドキュメントは通常ありません。 それは染み付いCの習慣です。 [OK]を、ので、今、私たちはこの配列を持っています。 だから我々はこの配列、Cを持っています。 私たちは、概要を得ることができます C、要約Cの統計情報。 そして、それはいいです。 だから今のは、いくつかの行列のことをしましょう​​。 のは、mが行列であるとしましょう​​。 のは、それ3つずつ3作ってみましょう。 だからNROWSは3に等しく、ncolsのは3に等しいです。 そして、データのレッツはそう何をdo-- あなたはこれを行うために起こっていると思いますか? 右、それは次の一つです。 それはnrowとncolumnです。 それでは、私がやったことは私がしましたです 3×3行列を宣言 私は、9要素の配列で渡されました。 すべての対数そう 要素9を介して1。 そして、すべてのそれらの値が埋めます array--残念アップ? 観客:これらは、ベース10のログがありますか? CONNER HARRIS:いいえ、ログがあります 自然対数なので、底e。 ええ、あなたが望んでいた場合は、ベース 10ログは、私はあなたが持っていると思います ログ10で割ったものは何でも、ログインします。 それで[聞こえない]のデータは、ちょうど 、底に配列するので、トップを充填 その後、左から右へ。 そして、あなたは他のいくつかの操作を行いたい場合 配列、のは、nが行列であるとしましょう​​。 私は13に、2を知らない、のは、やってみましょう。 または私はもっと面白い何かをするだろう。 私は2〜4の操作を行います。 nrowは、のは言わせて、3に等しいです。 NcoIは4に等しいです。 N。 だから我々はこれを持っています。 そして今、我々はこれらを乗算したい場合は、 我々は、nパーセント回パーセントをするだろう そのためにはn個です。 そして、我々は行列積を持っています。 彼らところで、あなたはどのように見ました 私は、nを宣言したときに、2から4 ベクターは、まで循環させてしまいました それは、nのすべてを埋め? あなたが取るしたい場合 固有値分解、 これは、我々は非常に簡単に行うことができるものです。 我々は固有nを行うことができます。 そして、これが私たちの最初のものです リストで発生します。 だから固有nが2キーを使用して、リストです。 ここで、この配列である値、。 そして、ここで、この配列であるベクトル、。 ですから、抽出したい場合は、 たとえば、この3番目の列 固有ベクトル行列から、なぜなら 固有ベクトルは列ベクトルです。 だから我々はVEC固有n個のド​​ル記号を行うことができます ベクターは、コンマ3の[聞こえません]。 VEC。 ご想像のとおり、ということです。 次に言うn回パーセント回VEC。 そこでここではその結果は確かのように見えます ここでは第三の固有値を取った場合、 これに対応します 第三固有ベクトル。 それはちょうどですべてを掛け この固有ベクトル、成分ごと、 固有値によって。 そして、それは我々が期待するものです、 そのためには固有値があるものです。 ここに誰を持っていません 線形代数を撮影? カップルの人々、[OK]をクリックします。 少しだけのためにあなたの脳をオフにします。 そして、我々は固有のnを取る確かにあれば 3回VECドル記号値、 よく同じことを得ます。 これは、行としてフォーマットされています異なります 代わりに、列ベクトルのベクトル しかし、大したこと。 そしてそうそれらは基本的にはいいです 私たちは行列でできること、 一覧を示しました。 私は素敵なを示すべき 同様に機能に関するもの。 それでは、say--ましょう[聞こえません] 機能、レッツ・コール それに対して機能FUNC N N squared-- 実際に、それは本当に最高ではないのです。 A、B、乗プラスB。 だから、一つのことについて 機能、再度、それらは 明示的なreturn文は必要ありません。 だから、just--ことができます 最後の文が評価 返さ声明になり、 または値が返さ。 したがって、この場合には、我々は評価しています 1文で、乗プラスB。 つまり、デフォルトの戻り値になります。 それはで入れて痛いことはありません 、明示的に値を返します あなたが扱っている場合は特に 非常に複雑なロジックの機能 フロー。 しかし、あなたはそれらを必要としません。 だから今、私たちはFUNC 5,1を行うことができますし、 これは、あなたが期待するものは基本的です。 私たちにできる何か他のもの、 私たちは実際にFUNC bを行うことができます 1に等しく、5に等しいです。 だから我々はここにどの番号を指定した場合、 これは引数にする引数行きます 関数の中で、私たちは、周りに反転することができます 私たちが好きな場所、これらの値。 観客:理由があります Bでそれを書くために ただ使用するのではなく等​​しいです 数字とカンマ? CONNER HARRIS:ええ、通常 あなたが機能を持っている場合、これを行います 引数の多くの。 それは多くの場合のようであるかもしれません あなただけいただきたいフラグ まれに使用します。 そして、この方法は、あなたはあなたをonly--することができます 特定の引数を参照することができます あなたが使用すること デフォルト以外の値を、 あなたが外に記述する必要はありません フラグの束がそれらの後、偽等しいです。 または私は再びこれを書くことができます Bのようなデフォルト値は2に等しいです。 そして私がf funcを行うことができ、 私は4、1、この時間をやります。 図4は、二乗され、17 ご想像のとおり、プラス1、。 しかし、私はちょうどもできました FUNC 4でこれを呼んで、 私はので、18を得るでしょう 私はBを指定しないでください。 だから、bが2のデフォルト値を取得します。 [OK]を、今あなたがしている場合 デモと一緒に以下の、 あなたのコマンドで、この行を入力 プロンプトと立ち上がるものを参照してください。 実際に、それをしません。 これを入力してください。 あなたはこのようなものを取得する必要があります。 mtcarsようにデータに内蔵されています このデモンストレーション用セット それが来るwith--来る目的 あなたのRの配布と、デフォルトではインチ これはからの統計情報をまとめたものです モータートレンド誌の1974年問題 別の車のモデルの数に。 だから、ガロン当たりマイルあり、cylinders-- 私は何DISP is--馬力忘れます。 おそらく。 あなただけのGoogleのMT車の場合、 最初の結果の後、1 からになります 公式Rのドキュメント それは説明します すべてのこれらのデータフィールド。 だから、重量がある重量is-- トン車の重量。 Q秒が4分の1マイルの時間です。 だから今、私たちはいくつかの楽しいことを行うことができます MT車についてのデータフィールドです。 だから私たちは物事を行うことができます 行名、MT車のように。 そして、これは内のすべての行のリストです。 車の名前であるデータセット。 我々はCOLNAMES、MT車これを行うことができます。 あなたは、MT車をすれば、 2のようなサブ数値インデックス、。 我々は外に第二カラムを取得します これは、シリンダされるであろう。 観客:あなたが何をしましたか? CONNERハリス:私は入力されました MT車、ブラケットE、 これは私の第二を与えました MT車の外に列。 我々は、行をしたい場合、または、私が入力することができます mtcarsには、例えば、2をコンマ。 そのような他のラウンド2カンマ、。 そして、それはあなたの行になります。 これはここだけ、あなたに与えます ベクターとしての列が、列。 私はちょうど今、私を実現しました 証明するために忘れてしまいました ベクターについてのいくつかのクールなもの あなたがインデックスに行うことができます。 だから、私は今のことをやらせます。 それでは、パッティングgets-- Cをやらせます 1〜10 pause-- 2回でこの。 だから、Cだけになるだろう 20を通してベクトル2。 私は、C2、このような要素を取ることができます。 私は、ベクターに渡すことができます このように、私を聞かせC-- VEC Cのような、Cとは異なる名前を使用します。 基本的に、私がやっています このようにあなたが得ることはありません Cとの間の混乱 ベクター構築機能、 して、変数名としてC。 VECブラケットC 4、5、7。 これは、第5、第四に私を取得します アレイの7つの要素。 私は負に入れ、VECを行うことができます 負の4のようなインデックス、。 それはこれで私を取得します 4番目の要素を除去しました。 その後、私はスライスをやってみたかった場合、 私は6を通じてVEC 2を行うことができます。 2コロン6はちょうど別です 2ベクトル、3、4、5、6。 それを出してくれる。 だからとにかく、バックMT車へ。 それでは、いくつかの回帰を行うことができます。 モデルがしてみましょうgets--としましょう 直線的に私にはわかりませんregress--。 まずはもちろん、mtcarsを添付してみましょう。 だから、[聞こえない]モデルLMは、のは、退行しましょう チルダ重量のマイル/ガロン。 そして、データフレームはmtcarsです。 だから要約モデル。 [OK]を、ので、これは少し複雑に見えます。 しかし、基本的には、我々かのように見て マイル/ガロンを表現してみてください 重みの線形関数として、 その後、私たちはここで、この行を持って、 これは37.28でインターセプトします。 37.28は、理論的なマイルになります ゼロの重さの車のガロンあたり。 そして、すべての追加トンのため、 あなたはガロン当たり約5マイルをノック そのオフ。 これらの係数の両方あなた そこに、標準誤差を見ることができます。 そして、彼らは非常にあります 統計学的に有意な。 だから我々は非常に特定することができます 負の10から1 E 10。 負のだから1回何かを 10、あなたは重い車を作る場合に、 それはガロンあたり悪化マイルを持っています。 それとも我々はいくつかの他のモデルをテストすることができます。 同様の代わりに、 重量でこれを回帰、 重量のログでそれを退行させ、 多分有効重量理由 走行距離に何とか線形ではありません。 これは、私たちに0.7528の二乗Rを与えました。 それでは、これを試してみましょう。 今回はのはやらせます 別の変数、あまりにも。 MODEL2。 だから要約、MODEL2。 すべての権利なので、もう一度、我々 ここで私たちの最高のフィットラインを得ました。 そして、これは、これは言っていますtime-- 基本的にはそのたびに の重量を増加させます Eの要因によって車 あなたはガロンあたり、この多くのマイルを失います。 だから今回は、当社の残余の標準 そのit--エラーは本当に重要ではありません。 残留標準誤差はあります 基本的には標準エラー あなたが後に残っていること トレンドラインを奪います。 そして、ここで私たちの二乗rは、0.81であります より少し優れているもの 我々は、0.52の前に持っていました。 そして、今のは追加してみましょう この回帰の用語。 それでは、マイル/ガロンを退行させます 重みのログの両方 そして、のは、q個のマイルをさせ、 4分の1マイルの時間。 [OK]を、それがthe--すべての権利、qsecを持っている必要があります。 Qsec。 Actually--申し訳ありませんが、何? 私はこの何かを呼びましょう MODEL2以外に他の。 私はこのMODEL3を呼びましょう。 そして今、我々は要約MODEL3を行うことができます。 そのため、再び、これは基本的に 何を期待するかもしれません。 あなたは正の切片を持っています。 増加効果的な 重みは負です。 かつ効果的に 増加4分の1マイルの時間 しかし肯定的であるが、 重量よりとても少ないです。 今直感的に、あなたはの意味を作ることができます このスポーツカーを考えると言うこともできます。 非常に高速な加速があり、 非常に短い4分の1マイルの時間。 彼らはまた、より多くのガスを使用するつもりです もっと賢明な車が行っているのに対し、 遅い加速を持っています、 高い4分の1マイルの時間、 そのため,,少ないガスを使用 ガロン当たりのより高いマイル。 グレート。 そして今、それは時間です このような何かをプロットします。 それでは、そのように裸do--てみましょう 私たちが行うことができます骨plots-- 私はこのデータフレームを添付しましたので、 before--私たちはプロット、重量のmpgを行うことができます。 これは少し大きくしてください。 そこに、私たちは基本的に持っています 散布図が、ポイント この上で見ることが一種のは難しいです。 私はぶっきらぼう何覚えていません 構文は、プロットを変更するためのものです。 だから私はこれがされると思います 育てるのに良い時期、 とても素敵な組み込みヘルプがあります 機能、ヘルプ名前を引用符で機能します。 私たちは基本的に育てますよ あなたが好きなもの。 私は実際にこれをやると思います タイプは、ポイントのプロットのPに等しいです。 それが何かを変更しましたか? そして、いや、そうでもありません。 大丈夫。 私はこれをしなかったいくつかの理由から、 しばらく前に自分のコンピュータ上で、 すべての散布点 より明確にしました。 とにかく、目に見えるの散布種類がありますか? そこに1があります。 そこにいくつかの、いくつかあり。 あなたは、ソートの権利、それらを見ることができますか? だから我々は最高のフィットラインを追加する場合 ビット裸である、ここで、このプロットに bones--私はそれは少し立派にしましょう​​。 メインは、重量対等しいです。 マイル/ガロン。 繰り返しますが、あなたはどのように見ることができる便利 オプションの引数にもしてここにあります で物事を置くことがありません キーボード引数を指定して特定の順序 あなたはプロット、理由があるとき これらは、引数の多くを取ります。 Xlabは、重量、重量、トンに等しいです。 大丈夫。 [OK]を、ええ、このデバイス ビット迷惑されています。 しかし、あなたは、ソートのそこまで見ることができます 側のグラフのタイトルがあります。 ここthere's--下部にオーバー ここで軸のラベルがあります。 私はぶっきらぼう覚えていません どのコマンドがars-- どの機能が増加しています これらのラベルとタイトルのサイズ、 彼らはそこにいます。 そして、私たちがしたい場合は 最良適合線を追加し、 私たちは私like--何かを行うことができます 構文はここに書かれています。 だから我々はちょうどモデルを追加覚えています MPG、体重、mtcarsました。 そして、私は最高のフィット感を追加したいそうだとすれば ラインは、私は、Bラインモデルを行うことができます。 そして、ブーム、我々は最高のフィットラインを持っています。 それは、再び参照するには、ハードのようなものです。 私は約かなりごめんなさい 技術的な難しさ。 しかし、それは基本的に実行されます 上から下、左から右へ。 そして、規模があった場合 大きな、あなたが見ることができます 切片であることが何をすることができます 要約統計量から見つけます あなたは要約モデルを入力した場合。 [OK]をので、私は誰もが取得願っています 何の感覚のようなもの Rは、それがために良いことだもの、です。 あなたはよりはるかに立派プロットを作ることができます あなた自身の時間にこれ、あなたが好きなら。 外部関数インタフェースそう。 これは一般的にないものです 入門講義でカバー またはrのための入門何でも。 それはあなたがそれを必要としている可能性はないのです。 しかし、私は、それが有用であることが分かっ 過去に私自​​身のプロジェクト。 そして、は良いはありません オンラインそれのためのチュートリアルです。 だから、僕はするつもりです このを通してあなたのすべてを急い そしてあなたが残して自由です。 だから外国人 関数インターフェースは何ですか あなたが見るために呼び出すために使用できます R.内部で機能し、 RがC. Rの算術だけである上に構築されています Cの64ビット浮動小数点演算、 これは[聞こえない]をダブルタイプです。 そして、あなたは何をしたいかもしれません 理由の束のためのこの。 一つは、Rが、それだと解釈され マシンコードにまでコンパイルされません。 つまり、あなたを書き換えることができます 内部ループCで、その後は取得します R.等を用いることの利点 それはもう少し便利にCよりもです それは、よりよいグラフを持っています 施設やその他もろもろ。 そして一方ではまだ入手することができるという 内側のループのうち最高速度、 これはあなたが本当にそれを必要な場所です。 既存のCライブラリの再利用、 それも重要です。 あなたのようなのためのいくつかのCライブラリを使用している場合は、 私は、フーリエ変換を知りません、 またはいくつかの非常に始生代 統計手順を使用 高エネルギー宇宙物理学における か何か、私にはわかりません。 高エネルギー天体物理学 さえないと思い、私は思います。 しかし、あなたがたのではなく、それを行うことができます それらのネイティブRポートを書き込みます。 そして、あなたの場合のように、再びthe--とオン Rの既定のライブラリのほとんどで見て、 内部に、内部があります 外国の機能を使用するつもり 非常に広範囲のインタフェース。 彼らは、フーリエ変換のようなものがあるでしょう 変換または相関を計算します C言語で書かれた係数、そして、彼らはよ ちょうどそれらのまわりRラッパーを持っています。 インタフェースがあります 少し難しいです。私は思う その難しさはに誇張されています あなたが見つけるの命令がたくさん。 しかし、それにもかかわらず、それは少し混乱しています。 そして、私はすることができていません それのために良いチュートリアルを見つけます、 これは、今それです。 また、このセグメント全体 後で参照するためのより多くのです。 コピー心配しないでください 今はすべてダウン。 したがって、次の手順 Unixライクなシステムのためのものです、 Linuxでは、BSDは、OS Xのは、私は知りません これはWindows上でどのように動作しますか、 しかし、ちょうどあなたをしないでください Windows上で最終的なプロジェクト。 あなたは本当にしたくありません。 Unixのは、はるかに良いセットです カジュアルなプログラミングのためのアップ。 だから、基本的には外国人 関数インタフェース。 あなたは、Cを書きたい場合 Rで使用するための機能、 それはすべて取るために持っています ポインタとして引数。 そこで、単一の値について、この それは値が指すことを意味します。 アレイの場合、これはポインタであります 最初の要素に、どの 配列名が実際に何を意味するかです。 繰り返しますが、これはあなたが持っているべきものです かなり完全にダウンして、pが5を設定した後。 配列名は単なるポインタであります 最初の要素に、 浮動小数点型はdoubleです。 そして、あなたの関数はvoidを返す必要があります。 それができる唯一の​​方法 実際に何が起こったのかRを伝えます Rが与えたメモリを変更することによってです 外国の機能により、それまで インタフェース。 だから私はこれを書いています ここでは例として、これは 使用を計算する関数 2つのベクトルの内積。 これは2つの引数、VEC1、VEC2をとり、 そのベクター自体があり、 して、nは、これがあります 長さ、再びので、 Rが見つけるために[聞こえない]に組み込まれています ベクトルの長さが、Cにはありません。 Cでは、ベクトルは任意であり、 メモリのチャンクを区切り。 あなたができるような方法 ドット積を計算します ちょうどこのOUTパラメータは設定されています ゼロにして、反復処理 1からので、nは星に nは長さへのポインタですが、 何かを追加 この出力パラメーター。 そして、それは良い練習することができます あなたがやろうとしている場合 これは、2つの別々のC関数を記述します。 そのうちの一つは、そのうちの一つだけhas-- 引数と型をとります 彼らは通常Cであろうこと だから、それは配列を受け取り ポインタとして引数。 しかし、Nのような単一値の引数、 それだけでコピーして値として受け取り、 ポインタなし。 そして、それはしていません [聞こえない]アウトポインタ。 そして、あなたが持つことができます 別の、基本的には、 基本的にラッパー関数こと 要件を処理します 外部関数の あなたのためのインターフェイス。 あなたがRでこれを呼び出す方法は一度、あります あなたは、あなたの関数は、C言語で書かれています あなたは、R CMDの共有ライブラリ、Rを入力 コマンド共有ライブラリ、 FOOドットC、または任意の ファイル名は、 OSはR端子にないシェル。 そして、これは作成されます。 fooというライブラリがそう点在しています。 そして、あなたはそれをロードすることができます 私たちのスクリプトまたは対話式に コマンドDYNドット負荷で。 その後、機能があります RドットCと呼ばれます。 これは、引数を取ります C言語の関数の最初の名前 あなたがコールする必要があります。 そして、すべてのパラメータ その関数に、 彼らは適切な順序でなけれ​​ばなりません。 あなたはこれらのタイプを使用する必要があります 整数として強制機能、 文字として、二重、およびなどの論理。 そして、それは返すとき もう一度だけであるリスト、 の関連配列 パラメータの名前と値 関数の後に実行されました。 ドットPRODが持っているので、この場合はそう 引数VEC1、VEC2、nはint型、nはアウト。 cのドットに、私たちはドットPRODを持っています、 関数の名前 我々は、VEC1、VEC2、型強制を呼んでいます。 ベクターのいずれかの長さは、 私はちょうどVEC1任意に選択しました。 それがsを言うために、より堅牢になります VEC1の整数分の長さ、長VEC2。 それからちょうど2つのゼロとして、 私たちは本当にないので、 入る気に 出力パラメータ私たちはだから とにかくゼロに設定します。 そして、結果があることを行っています 基本的には大きな関連する配列 VEC1は、VEC2は何であるものは何でもあります。 しかし、我々は興味を持っています アウト、私たちはそれを得ることができます。 これは、再び非常におもちゃの例であり、 外部関数インタフェースの。 しかし、あなたは、ドットを計算する必要がある場合 ループ内での大規模なベクトルの積、 またはあなたがしなければならない場合 ループ内の何か他のもの、 あなたはRに依存する必要はありません、 オーバーヘッドのビットを持っていました それに組み込まれて、これが役立ちます。 繰り返しますが、これは通常ではありません Rに入門トピック それは非常によく文書化されていません。 私はちょうどので、それを含めています 私は過去にそれが有用であることが分かっ。 だから、悪い習慣。 私はそこだと述べました 関数内のforループ。 一般的に、あなたは、いけないで 言語は、それを使用しません。 Rは、反復の実装方法に基づいて、 内部的には、遅くなることがあります。 彼らはただも醜いです。 Rはそのように、非常にきれいにベクトルを処理します しばしば、あなたはそれを使用する必要はありません。 その後は通常でき 多くの場合、ベクトルを交換します 高と呼ばれるこれらの機能を持ちます 注文機能、地図、削減、 検索またはフィルタリングします。 私はいくつかをあげます これらは何をすべきかの例。 地図ので、より高次の関数です。 それは、引数として関数を取ります。 だから、それに機能を与えることができ、 あなたはそれを配列を与えることができ、 そして、それは関数を適用します 配列の各要素に して、新しい配列を返します。 あなたが与える基本的には、削減 それ配列、あなたがそれを与えます 二つの引数を取る関数。 それは、最初の関数を適用します いくつかのスターター値を持つ最初の引数。 そして、第二にその結果に。 そして、第三にその結果を、 その後、第四にその結果に。 それが最後に到達したときに、その後、戻ります。 したがって、たとえば、あなたがしたい場合は すべての要素の合計を計算します 配列には、あなたが呼び出すよりも削減 [聞こえない]とすると、加算を削減 FUNCのような機能、 A、B、プラスbを返します。 そして、0の値を開始します。 そして、これらすべての、あなたがそれらを見つけることができます Rのマニュアルに記載され、 いずれの教科書の中で 関数型プログラミング。 このクラスもあります 呼び出される関数は、関数を適用し、 これは私は、彼らがしていますdon't-- 説明するのは難しいビット、 しかし、あなたが見れば[聞こえません] 私は冒頭で引用したことを計上し、 彼はかなりよくでそれらを説明します Rプログラミングの彼の付録。 慣行についての詳細、 ベクトルに追加します。 うん? 私はそれを修正するべきだと思います。 その最初の行では、VEC矢印、 その矢印があってはなりません。 あなたは、ベクトルに割り当てることができます 再び、その長さを取ることにより、プラス1 そのためにいくつかの値を割り当てます。 これは、ベクトルを拡張するか、またはします VEC等号C、VECがnewValueを行うことができます。 ここでも、あなたがCを使用している場合 ベクターとしての一つの引数、 結果の階層がフラット化されます。 だから、あなただけのベクトルを取得します それは、1により拡張です。 これを行うことはありません。 理由はあなた これはこれでやるべきではありません。 あなたがベクトルを割り当てると、それ それをメモリの特定のチャンクを与えます。 あなたはそのベクトルのサイズを大きくした場合、 それはベクトルを再割り当てする必要があります どこか別の場所。 だから再配分は非常に高価です。 私は方法の詳細に行くことはありません メモリアロケータが実装されています オペレーティング・システム・レベルで、 それは多くの時間がかかります メモリの新しいチャンクを見つけることができます。 そしてまた、あなたがしている場合 再割り当てとてもたくさん 徐々に大きく チャンク、あなたは終わります 呼ばれるもので メモリの断片化、 ここで、使用可能なメモリがあります 小さなブロックのロットに分割 ビューのメモリアロケータポイントインチ そして、それは難しくなります 他のもののためのメモリを検索します。 だからではなく、これを実行する必要がある場合は、もし あなたは、一端からベクトルを成長させるために必要 次に、それに追加する代わりに、 常に、あなたはそれを事前に割り当てる必要があります。 VEC矢印、ベクトル長 千、または何に等しいです。 そして、あなただけ割り当てることができます ベクトルの値を1に あなたが一度割り当てられた後の時間。 私は、もう一度、このに私の夏のジョブを実行し 私は、NRAの差を書いていたとき 方程式ソルバ。 数値象徴されていません。 アイデアは、一度あなたが持っているということです あなたのソリューションのための1つの値、 あなたは、次のいずれかを計算するためにそれを使用。 そこで、私の自然な素朴な 傾きがOKと言うことでした、 私は、ベクターから始めましょう それはかなりの値です。 その次の値から計算します それが、私の解ベクトルに進みます し、それを追加します。 何か他のものを作成し、それを追加します。 それは非常に、非常にゆっくりと行ってきました。 そして、私はこれを実現したら、 私は私のシステムを変更しました このベクトルに追加するから 10,000〜100,000倍のように、 ちょうどベクトルを事前に割り当てるに そしてそれだけで実行されています。 私は、1,000以上の倍のスピードアップを得ました。 だから、これは非常に一般的です Rプログラミングのためのトラップ。 あなたは、ベクターを構築する必要がある場合 少しずつ、それを事前に割り当てます。 このup--別の一般的な旅行が私の最後のものです スライド、worry--はありませんが、エラー処理です。 Rは、率直に言って、ありません 実際には非常によくこれを行います。 がたくさんあり​​ます 最大切り抜くことができます問題。 たとえば、配列を取得する場合 または機能のうちベクトル あなたは、単一のを期待していること 来る値、またはその逆、 あなたはその関数の中にそれを渡します あなたは、単一の値を期待して書きました、 それが問題になることがあります。 特定の機能 そうであるように、たとえば、nullを返します からの読み込み リスト内に存在しないキー。 しかし、nullは、Cのようではありません どこに読むことをしようとした場合 古いポインタから、[聞こえません] ポインタをNULLに、それだけで障害をSEG あなたは、あなたのデバッガにいる場合に あなたがいる場所を正確に確認できます。 機能をdo--ます代わりに、ヌル 予測不可能なことを行います 彼らは利きヌルなら。 あなたは最大ヌルを渡されている場合と同様に、 それはあなたの負の無限大を与えるでしょう。 そしてそう、ええ。 そして、これが起こりました 私にはかつて私が持っていたとき フィールドの束を変更 私のリスト構造で 一度別の場所に変更することなく、 とき、私は彼らから読んでいました。 そして私は、ランダムなすべての種類を持って 無限の結果は、最大トリミング 私は彼らから来た全く分かりません。 そして残念ながら、あります 本当のR strictモードません 何かあればあなたが言うことができる場所 それが誤りである可能性があるように見えます、 私がすることができますので、ちょうどそこに停止 規律とそれを修正します。 しかし、何かがあります 停止しない場合に呼び出さ。 これは、Cのアサートに相当し、 あなたはそのことについて話をした場合。 私はCが主張するとは思いません 講義トピックがあり、 しかし、あなたのセクションリーダー その上に行っている可能性があります。 基本的にはどのように取るされていない場合と停止 述語なので、任意のステートメントこと trueまたはfalseです。 それが偽なら、それはそのプログラムを停止します。 それはあなたのラインを正確に説明します 上だったとどのような条件が失敗しました。 そして、この非常に便利な、例えば、 健全性チェック、関数入力。 だから、あなたが機能を持っている場合 あなたは、たとえば、期待します あなたが私に日付を与える必要がある場合は、私が欲しいです 日付は長さ1のベクトルであるだけ どこか1と31の間。 そうでない場合、私は知っています 何かが間違っています。 そして、私はこの前に、そこに停止することを選択します コー​​ドを使用して効果に関するランダムノックを持っています それが難しくなっていることをトレースします。 だから、可能な一つです ない場合は、停止するために使用します。 [OK]を、とにかく。 だから、終わりです。 今後のためにありがとうございました。 私はこの時、ランク素人です。 あなたが退屈しているのであれば申し訳ありませんか 混乱または何を持っています。 私は、電子メールで質問をお受けすることが幸せです connorharris@college.harvard.eduで。 これは誰にとっても行きます これが後に生きるか、見て。 また、しかし私はないんだけど TF、私も非常にしています 非公式として機能して喜ん だ、誰のための顧問 最終的なプロジェクトにRを使用。 あなたはそれにたい場合は、 その後、ちょうどあなたのTFに話します そしてそのように私にメールを書きます 私は、あなたが取り組んでいるものを知っています そして私は、会議を設定することができます 必要に応じてあなたと回。 だからもう一度、どうもありがとうございました。 私はあなたがそれを楽しんだことを望みます。 聴衆:[聞こえません]。 CONNER HARRIS:もちろん。 聴衆:プロジェクトのどのような CSの学生がためにRを使うのでしょうか? CONNER HARRIS:だからあなたがいない場合 データマイニングでは、純粋に何か、 例えば、そこに 物事の多くは、 あなたは、データとそれに行うことができます 鉱業、機械学習。 あなたがのためにRを使用する場合があります 何かの部品。 私は、もともと、例を育てました あなたがウェブサイトを書いているのならば あなたは自動実行したいです サーバーの統計分析 特定の時点でのログ毎日、 それは何かであるかもしれません ただ簡単に行うことは非常に簡単 あなたがスケジュールすることができますRスクリプト 例えば、毎晩実行します。 そして、私は、もし確信しています あなたがしたい任意の理由があります 統計やグラフ機能が欲しいです その代わりに、自動的にこの実行を持っています 対話することの Excelでのものと、 例えば、それは何か あなたはRを使用する場合があります。 だから私の前にそれ以上の質問がまま? なし? すべての権利、よく、再び、感謝 あなた来るために非常に多くを。