Your SlideShare is downloading. ×
R Language Definition 2.2 to 2.3
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

R Language Definition 2.2 to 2.3

826
views

Published on

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
826
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. R  Language  Defini,on   version  2.14.2  (2012-­‐02-­‐29)  DRAFT 2.2  ~  2.3 Tokyo.Lang.R  #1   2012/4/1   @_kohta   1
  • 2. 2.2  AGributes •  NULLを除く全てのRオブジェクトは、データ本体とは別 にaGribute(属性)という要素を(複数)持つことができる  •  複数のaGributeは、それぞれ名前がつけられ、pairlist の形で保持される  •  aGributes(obj)でobjのaGribute一覧を見ることができ、 aGr(obj,”aGrname”)で個別aGributeを操作できる   >  obj  <-­‐  kmeans(dist(iris[,1:4]),3)   >  aGributes(obj)   $names   [1]  "cluster"            "centers"            "totss"                "withinss"          "tot.withinss"   aGribute [6]  "betweenss"        "size"                     $class   [1]  "kmeans"     “class”  aGributeの取得 >  aGr(obj,"class")   [1]  "kmeans" 2
  • 3. 2.2  AGributes •  いくつかの特殊なaGributeには、専用のアクセサ関数 が用意されていることがある   –  class(),names()など  •  aGr()やアクセサによるaGributeの操作ではconsistency   check(長さ、型)が行われる   >  names(obj)  <-­‐  c(names(obj),"hoge")    以下にエラー names(obj)  <-­‐  c(names(obj),  "hoge")  :          names  属性 [8]  はベクトル [7]  の長さと同じでなければなりません >  aGr(obj,"names")  <-­‐  c(names(obj),"hoge")    以下にエラー aGr(obj,  "names")  <-­‐  c(names(obj),  "hoge")  :          names  属性 [8]  はベクトル [7]  の長さと同じでなければなりません •  Rのクラスは(S3だけでなく)aGributeの仕組みを使って 実現されている 3
  • 4. 2.2.1  Names •  names  aGributeは、データ本体(vectorまたはlist)の 個々の要素の名前を保持する   –  名前は要素にアクセスするためのキーとしての役割も持つ   >  quan,le(iris[,1])   names    0%    25%    50%    75%  100%      4.3    5.1    5.8    6.4    7.9     データ本体(vector) >  quan,le(iris[,1])["25%"]   25%     5.1 4
  • 5. 2.2.1  Names •  names<-­‐  (names(obj)<-­‐の意。たぶん)は、names   aGributeの正しい型、長さのチェックを行う  •  と書いてあるが…   >  myiris  <-­‐  iris   >  names(myiris)   [1]  "Sepal.Length"  "Sepal.Width"    "Petal.Length"  "Petal.Width"    "Species"             >  names(myiris)  <-­‐  c("a","b","c")   >  names(myiris)   [1]  "a"  "b"  "c"  NA    NA     >  myiris  <-­‐  iris             >  names(iris)  <-­‐  c(names(iris),"a")    以下にエラー names(iris)  <-­‐  c(names(iris),  "a")  :          names  属性 [6]  はベクトル [5]  の長さと同じでなければなりません   –  いつもチェックされるわけではない???   •  コード読むべきかも(すみません) 5
  • 6. 2.2.1  Names •  pairlistと1次元arrayは特別な扱いを受ける   –  pairlist  objectに対しては、virtual  names  aGributeが使われる   •  ??   –  the  names  aGribute  is  really  constructed  from  the  tags  of  the   list  components   •  tags  of  the  list  components??   –  1次元arrayについては、names  aGributeは実際には dimnames[[1]]にアクセスする   –  pairlistに対してはdimnamesのようなリスト構造のnames   aGributeではないということか?   6
  • 7. 2.2.2  Dimensions •  dim  aGributeはarrayを表現するために用いられる  •  Rのarrayのデータ本体は全て1次元配列であり、行列な どの多次元arrayは、1次元配列をdim  aGributeに従っ て列優先で解釈することで実現される >  obj  <-­‐  1:6   >  dim(obj)   vectorはdim  aGributeを持っていない NULL   >  dim(obj)  <-­‐  6   >  obj   1次元のdim  aGributeを付加してみる [1]  1  2  3  4  5  6   >  dim(obj)  <-­‐  c(2,3)   >  obj            [,1]  [,2]  [,3]   2次元のdim  aGributeを付加してみる   [1,]        1        3        5   2行3列、列優先で行列として解釈される [2,]        2        4        6   >  dim(obj)  <-­‐  c(3,2)   >  obj            [,1]  [,2]   2次元のdim  aGributeを付加してみる   [1,]        1        4   3行2列、列優先で行列として解釈される [2,]        2        5   [3,]        3        6 7
  • 8. 2.2.2  Dimensions •  p.7最終行   –  The  length  of  one  or  more  dimensions  may  be  zero.   –  どういうこと??   8
  • 9. 2.2.3  Dimnames •  次元要素それぞれに対する個別名を保持する(例えば 2次元配列なら行名と列名)  •  2次元以上の場合は、各次元に対する名前vectorのリ ストになる   >  dimnames(iris[1:10,])   raw  dimensionの名前 [[1]]    [1]  "1"    "2"    "3"    "4"    "5"    "6"    "7"    "8"    "9"    "10"   column  dimensionの名前   [[2]]   [1]  "Sepal.Length"  "Sepal.Width"    "Petal.Length"  "Petal.Width"    "Species"   9
  • 10. 2.2.4  Classes •  オブジェクトのクラス情報を保持する   –  クラスに継承関係がある場合は、親クラス名も含めた character  vectorとなる  •  class  aGributeの変更には制限が無く、自由に書き換え 可能   >  obj  <-­‐  kmeans(dist(iris[,1:4]),3)     >  aGr(obj,"class")   [1]  "kmeans" 10
  • 11. 2.2.5  Time  series  aGributes •  tsp  aGributeは時系列に関する情報(開始時点、終了 時点、frequency)を持つ >  UKgas                Qtr1      Qtr2      Qtr3      Qtr4   1960    160.1    129.7      84.8    120.1   1961    160.1    124.9      84.8    116.9   1962    169.7    140.9      89.7    123.3   1963    187.3    144.1      92.9    120.1   4(quarter)  *  27(year)  =  108個のデータ 1964    176.1    147.3      89.7    123.3   1965    185.7    155.3      99.3    131.3   …   *「1単位」は時点値の整数部を1増減   1986  1163.9    613.1    347.4    782.8      させることに暗黙的に決まっている   >  aGributes(UKgas)    (おそらく)   $tsp   *行名は暗黙的に時点値の整数部となる   [1]  1960.00  1986.75        4.00     *Qtr1  …などの列名はFrequencyの値に   $class   データ何個で1単位か  よって暗黙的に与えられる   [1]  "ts"  (4ならQtr,  12なら月名,  それ以外は無し)  第108データの時点値 第1データの時点値 xtsを使うべき 11
  • 12. 2.2.6  Copying  of  aGributes •  オブジェクトが変更されたときに、aGributeの値がコ ピーされるべきかどうかは一般に決めるのが難しい   –  ある程度の一般的な規則があるらしい(referenceを参照)  •  ある単一の要素に対して同じ形式の単一要素を返す 関数(Scalar  func,on,  ベクトル関数も含む)はaGributeを 保つべき  •  2つ以上の要素(引数)から1つの要素を返すような関数 では、より多くのaGributeを持つ(longer?)要素の aGributeをコピーする   –  names,  dim,  dimnamesはコピーされないため、ユーザが明示 的にコーディングする必要がある 12
  • 13. 2.2.6  Copying  of  aGributes •  オブジェクトのSubsepngでは、一般的に names,dim,dimnamesを除くaGributeが消去される  •  Subassignmentでは、データの長さが変わった場合でも、 aGributeは保持される  •  Coercionは全てのaGributeを消去する  •  組み込みのソートメソッドはnamesを除く全ての aGributeを消去する   –  namesはデータと同様にソートされる 13
  • 14. 2.3.1  Factors •  いくつかの決まった値のみをとる量を表現する   –  levels  aGributeを持ち、”factor”  classである   >  class(iris$Species)   [1]  "factor"   >  levels(iris$Species)   [1]  "setosa"          "versicolor"  "virginica”    •  factorクラスのオブジェクトは、contrasts  aGributeを持つ ことがある   –  回帰などのモデリングで参照されることがある   14
  • 15. 2.3.2  Data  frame  objects •  data  frameはmatrixのリスト、又はvector,  factor,  matrix から成るリスト   –  vectorの長さ(matrixの場合は行数)は全て同じでなければな らない  •  data  frameのnames  aGributeは変数(列要素)の名前を 保持し、row.names  aGributeはケース(行要素)の名前 を保持する 15
  • 16. 2.3.2  Data  frame  objects •  data  frameは他の要素と同じ長さのリストを持つことが でき、そのリストの要素には様々な長さのオブジェクト を保持させることができる  •  複雑なデータ構造を表現できるが、現状のR実装では まともにサポートされていない data  frameの変数1 data  frameの変数2  V1    V2   0.1   1,  2,  3 0.5   6,  7,  9,12 0.3   5 1.0   0.8   4,8 16