Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
RのオブジェクトItoshi NIKAIDO <dritoshi@gmail.com>                                      1
Rはすべてがオブジェクトvector, matrix, 関数...ひとつのクラスに属する                        2
そもそもオブジェクトとは変数やシンボルを介してメモリのデータへアクセスしたい言語から直接メモリにアクセスするといろいろと面倒特別なデータ構造を決めておきオブジェクトとして定義しておくそのオブジェクトにシンボルや変数を介してアクセスすれば楽   ...
Rオブジェクトにはデータ型があるinteger, double, logical, complex, character, raw                                                    4
あれ? numeric は?Rオブジェクトにはデータ型以外の概念がある → mode                               5
modeSはデータ型を mode と呼んでいたらしいSとの互換のため。mode がある        type       mode       logical     logical      integer     numeric     ...
storage modeメモリ上ではどのようなデータ型で保存しているのか?メモリ上では numeric を区別しなければならない       type       mode       storage mode      logical    ...
オブジェクトは属性を持つ成分の名前、次元、所属するクラス、時系列属性                         8
オブジェクトは属性を持つ成分の名前、次元、所属するクラス、時系列属性などnames()      dim()   class()   tsp()dimnames()オブジェクトの構造: str()オブジェクトの属性: attributes() ...
オブジェクトはデータ構造を表現するオブジェクトをひとまとまりにして、まとめて操作したいvector, matrix, list, data.frame...                                      10
Rで基本となる4つのデータ構造次元数と異なるタイプを混ぜられるかで分類できる     vector                           list    3 2 4 1 ...                     3 A 4 ...
統計言語らしいデータ構造 factorカテゴリカル変数を表現するためのデータ構造男女、年代、クラス分けなどカテゴリを扱いたいこの水準に文字列の名前を使いたい水準を数値で表現してしまうと、誤って数値計算してしまう恐れがある特別な水準を表現するデー...
factorの構造 factor class であり、labels 属性を持つオブジェクトR> sex <- factor(c("female", "male", "female", "female"))R> sex[1] female mal...
factorが苦手?いつのまにか factor になる。factor のなにが嬉しいか> R は character を factor へ強制変換したがる- データフレームに変換したときdata.frame(stringsAsFactors =...
自分でオブジェクトを定義したいオブジェクト指向プログラミングR のオブジェクト指向は歴史的経緯で3種類もある...これから覚えるならR5だけ覚えればよい (すごく私見)- S3: オブジェクトの属性にクラス名を入れただけ + 総称関数。ゆるふわ...
加筆予定説明していないこといろいろなオブジェクト- 言語オブジェクト: 文字列から式を作る、あるいはその逆- 予約オブジェクト: lazy evaluation を実現する- 表現式オブジェクト: 文の集まり。文はシンボルの集まり       ...
まとめRのオブジェクトとはなにか?Rはすべてがオブジェクト- オブジェクトの型 - データ型、mode, storage.mode- オブジェクトのデータ構造- オブジェクト指向プログラミング                          ...
参考資料論文、オンラインドキュメント、書籍  • The R Language Definition  • Rプログラミングマニュアル  • Rの基礎とプログラミング技法  • R言語逆引きハンドブック                      ...
Upcoming SlideShare
Loading in …5
×

Rのオブジェクト

6,380 views

Published on

  • Be the first to comment

Rのオブジェクト

  1. 1. RのオブジェクトItoshi NIKAIDO <dritoshi@gmail.com> 1
  2. 2. Rはすべてがオブジェクトvector, matrix, 関数...ひとつのクラスに属する 2
  3. 3. そもそもオブジェクトとは変数やシンボルを介してメモリのデータへアクセスしたい言語から直接メモリにアクセスするといろいろと面倒特別なデータ構造を決めておきオブジェクトとして定義しておくそのオブジェクトにシンボルや変数を介してアクセスすれば楽 3
  4. 4. Rオブジェクトにはデータ型があるinteger, double, logical, complex, character, raw 4
  5. 5. あれ? numeric は?Rオブジェクトにはデータ型以外の概念がある → mode 5
  6. 6. modeSはデータ型を mode と呼んでいたらしいSとの互換のため。mode がある type mode logical logical integer numeric double numeric complex complex character character ユーザが意識する のはここ 6
  7. 7. storage modeメモリ上ではどのようなデータ型で保存しているのか?メモリ上では numeric を区別しなければならない type mode storage mode logical logical logical integer numeric integer double numeric double complex complex complex character character character ほかの言語から データにアクセ スする場合はス トレージモード typeof() mode() storage.mode() が重要になる 7
  8. 8. オブジェクトは属性を持つ成分の名前、次元、所属するクラス、時系列属性 8
  9. 9. オブジェクトは属性を持つ成分の名前、次元、所属するクラス、時系列属性などnames() dim() class() tsp()dimnames()オブジェクトの構造: str()オブジェクトの属性: attributes() 9
  10. 10. オブジェクトはデータ構造を表現するオブジェクトをひとまとまりにして、まとめて操作したいvector, matrix, list, data.frame... 10
  11. 11. Rで基本となる4つのデータ構造次元数と異なるタイプを混ぜられるかで分類できる vector list 3 2 4 1 ... 3 A 4 G ... 1D c(3,2,4,1) list(3,”A”,4,”G”) matrix data frame 3 2 4 1 ... 3 A 4 C ... 2D 2 0 5 3 2 T 5 G 1 1 7 3 1 G 7 C ... ... matrix( data.frame( c(3,2,1,2,0,1,4,5,7,1,3,3), first = c(3,2,1), nrow = 3 first.base = c("A", "T", "G"), ) second = c(4,5,7), second.base = c("C", "G", "C") ) same types differential types 11
  12. 12. 統計言語らしいデータ構造 factorカテゴリカル変数を表現するためのデータ構造男女、年代、クラス分けなどカテゴリを扱いたいこの水準に文字列の名前を使いたい水準を数値で表現してしまうと、誤って数値計算してしまう恐れがある特別な水準を表現するデータ構造として factor が用意されている 12
  13. 13. factorの構造 factor class であり、labels 属性を持つオブジェクトR> sex <- factor(c("female", "male", "female", "female"))R> sex[1] female male female femaleLevels: female male## level 数R> nlevels(sex)[1] 2R> is(sex)[1] "factor" "integer" "oldClass" "numeric" "vector"R> class(sex)[1] "factor"R> str(sex) Factor w/ 2 levels "female","male": 1 2 1 1 内部的にはラベルが整数に割り当てられている 13
  14. 14. factorが苦手?いつのまにか factor になる。factor のなにが嬉しいか> R は character を factor へ強制変換したがる- データフレームに変換したときdata.frame(stringsAsFactors = default.stringsAsFactors)- テキストファイルからデータを入力したときread.table(stringsAsFactors = TRUE)> Factor に慣れたほうが嬉しいことがたくさんある関数やモデル式が factor をカテゴリカル変数として認識してよい具合に処理してくれる 14
  15. 15. 自分でオブジェクトを定義したいオブジェクト指向プログラミングR のオブジェクト指向は歴史的経緯で3種類もある...これから覚えるならR5だけ覚えればよい (すごく私見)- S3: オブジェクトの属性にクラス名を入れただけ + 総称関数。ゆるふわ。- S4:クラスやメソッドを厳密に定義できるようになった! でも値渡し...黒歴史なので、Bioconductor のパッケージ作らない人は 忘れてよい (また私見)- R5: いわゆる普通のオブジェクト指向 (R2.12以降)オブジェクトを参照渡しできる!オブジェクト作成後に変更できる = mutable なオブジェクト普通のオブジェクト指向ができる! (関数言語っぽさがなくなる) 15
  16. 16. 加筆予定説明していないこといろいろなオブジェクト- 言語オブジェクト: 文字列から式を作る、あるいはその逆- 予約オブジェクト: lazy evaluation を実現する- 表現式オブジェクト: 文の集まり。文はシンボルの集まり 16
  17. 17. まとめRのオブジェクトとはなにか?Rはすべてがオブジェクト- オブジェクトの型 - データ型、mode, storage.mode- オブジェクトのデータ構造- オブジェクト指向プログラミング 17
  18. 18. 参考資料論文、オンラインドキュメント、書籍 • The R Language Definition • Rプログラミングマニュアル • Rの基礎とプログラミング技法 • R言語逆引きハンドブック 18

×