SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
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	
  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
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
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
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
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
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
2.2.2	
  Dimensions	
•  p.7最終行	
  
   –  The	
  length	
  of	
  one	
  or	
  more	
  dimensions	
  may	
  be	
  zero.	
  
   –  どういうこと??	
  




                                                                                         8
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
2.2.4	
  Classes	
•  オブジェクトのクラス情報を保持する	
  
  –  クラスに継承関係がある場合は、親クラス名も含めた
     character	
  vectorとなる	
  
•  class	
  aGributeの変更には制限が無く、自由に書き換え
   可能	
  
             >	
  obj	
  <-­‐	
  kmeans(dist(iris[,1:4]),3)	
  
             	
  
             >	
  aGr(obj,"class")	
  
             [1]	
  "kmeans"	




                                                                  10
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
2.2.6	
  Copying	
  of	
  aGributes	
•  オブジェクトが変更されたときに、aGributeの値がコ
   ピーされるべきかどうかは一般に決めるのが難しい	
  
  –  ある程度の一般的な規則があるらしい(referenceを参照)	
  
•  ある単一の要素に対して同じ形式の単一要素を返す
   関数(Scalar	
  func,on,	
  ベクトル関数も含む)はaGributeを
   保つべき	
  
•  2つ以上の要素(引数)から1つの要素を返すような関数
   では、より多くのaGributeを持つ(longer?)要素の
   aGributeをコピーする	
  
  –  names,	
  dim,	
  dimnamesはコピーされないため、ユーザが明示
     的にコーディングする必要がある	

                                                  12
2.2.6	
  Copying	
  of	
  aGributes	
•  オブジェクトのSubsepngでは、一般的に
   names,dim,dimnamesを除くaGributeが消去される	
  
•  Subassignmentでは、データの長さが変わった場合でも、
   aGributeは保持される	
  
•  Coercionは全てのaGributeを消去する	
  
•  組み込みのソートメソッドはnamesを除く全ての
   aGributeを消去する	
  
  –  namesはデータと同様にソートされる	




                                                13
2.3.1	
  Factors	
•  いくつかの決まった値のみをとる量を表現する	
  
  –  levels	
  aGributeを持ち、”factor”	
  classである	
  
                        >	
  class(iris$Species)	
  
                        [1]	
  "factor"	
  
                        >	
  levels(iris$Species)	
  
                        [1]	
  "setosa"	
  	
  	
  	
  	
  "versicolor"	
  "virginica”	
  	
  




•  factorクラスのオブジェクトは、contrasts	
  aGributeを持つ
   ことがある	
  
  –  回帰などのモデリングで参照されることがある	
  




                                                                                                 14
2.3.2	
  Data	
  frame	
  objects	
•  data	
  frameはmatrixのリスト、又はvector,	
  factor,	
  matrix
   から成るリスト	
  
   –  vectorの長さ(matrixの場合は行数)は全て同じでなければな
      らない	
  
•  data	
  frameのnames	
  aGributeは変数(列要素)の名前を
   保持し、row.names	
  aGributeはケース(行要素)の名前
   を保持する	




                                                        15
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

Más contenido relacionado

Destacado

Nonlinear Filtering and Path Integral Method (Paper Review)
Nonlinear Filtering and Path Integral Method (Paper Review)Nonlinear Filtering and Path Integral Method (Paper Review)
Nonlinear Filtering and Path Integral Method (Paper Review)
Kohta Ishikawa
 
Model Transport: Towards Scalable Transfer Learning on Manifolds 論文紹介
Model Transport: Towards Scalable Transfer Learning on Manifolds 論文紹介Model Transport: Towards Scalable Transfer Learning on Manifolds 論文紹介
Model Transport: Towards Scalable Transfer Learning on Manifolds 論文紹介
Kohta Ishikawa
 
量子アニーリング解説 1
量子アニーリング解説 1量子アニーリング解説 1
量子アニーリング解説 1
Kohta Ishikawa
 
Introduction to pairtrading
Introduction to pairtradingIntroduction to pairtrading
Introduction to pairtrading
Kohta Ishikawa
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
 
Particle Filter Tracking in Python
Particle Filter Tracking in PythonParticle Filter Tracking in Python
Particle Filter Tracking in Python
Kohta Ishikawa
 

Destacado (14)

A brief explanation of Causal Entropic Forces
A brief explanation of Causal Entropic ForcesA brief explanation of Causal Entropic Forces
A brief explanation of Causal Entropic Forces
 
Nonlinear Filtering and Path Integral Method (Paper Review)
Nonlinear Filtering and Path Integral Method (Paper Review)Nonlinear Filtering and Path Integral Method (Paper Review)
Nonlinear Filtering and Path Integral Method (Paper Review)
 
Model Transport: Towards Scalable Transfer Learning on Manifolds 論文紹介
Model Transport: Towards Scalable Transfer Learning on Manifolds 論文紹介Model Transport: Towards Scalable Transfer Learning on Manifolds 論文紹介
Model Transport: Towards Scalable Transfer Learning on Manifolds 論文紹介
 
量子アニーリング解説 1
量子アニーリング解説 1量子アニーリング解説 1
量子アニーリング解説 1
 
Introduction to pairtrading
Introduction to pairtradingIntroduction to pairtrading
Introduction to pairtrading
 
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
 
機械学習を用いた会議診断システムの開発
機械学習を用いた会議診断システムの開発機械学習を用いた会議診断システムの開発
機械学習を用いた会議診断システムの開発
 
TIS 戦略技術センター AI技術推進室紹介
TIS 戦略技術センター AI技術推進室紹介TIS 戦略技術センター AI技術推進室紹介
TIS 戦略技術センター AI技術推進室紹介
 
文章を読み、理解する機能の獲得に向けて-Machine Comprehensionの研究動向-
文章を読み、理解する機能の獲得に向けて-Machine Comprehensionの研究動向-文章を読み、理解する機能の獲得に向けて-Machine Comprehensionの研究動向-
文章を読み、理解する機能の獲得に向けて-Machine Comprehensionの研究動向-
 
「人工知能」をあなたのビジネスで活用するには
「人工知能」をあなたのビジネスで活用するには「人工知能」をあなたのビジネスで活用するには
「人工知能」をあなたのビジネスで活用するには
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
 
Introduction to statistics
Introduction to statisticsIntroduction to statistics
Introduction to statistics
 
Particle Filter Tracking in Python
Particle Filter Tracking in PythonParticle Filter Tracking in Python
Particle Filter Tracking in Python
 

Similar a R Language Definition 2.2 to 2.3

12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
Prunus 1350
 
第2回R勉強会1
第2回R勉強会1第2回R勉強会1
第2回R勉強会1
Paweł Rusin
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介
Daisuke Tanaka
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
Tomoharu ASAMI
 
Ibisml2011 06-20
Ibisml2011 06-20Ibisml2011 06-20
Ibisml2011 06-20
Yasuo Tabei
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
 

Similar a R Language Definition 2.2 to 2.3 (20)

Go言語のスライスを理解しよう
Go言語のスライスを理解しようGo言語のスライスを理解しよう
Go言語のスライスを理解しよう
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
 
Aizu lt tokyo_luxion
Aizu lt tokyo_luxionAizu lt tokyo_luxion
Aizu lt tokyo_luxion
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
 
R language definition3.1_3.2
R language definition3.1_3.2R language definition3.1_3.2
R language definition3.1_3.2
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
Chapter 6: Computing on the language (R Language Definition)
Chapter 6: Computing on the language (R Language Definition)Chapter 6: Computing on the language (R Language Definition)
Chapter 6: Computing on the language (R Language Definition)
 
第2回R勉強会1
第2回R勉強会1第2回R勉強会1
第2回R勉強会1
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
Ruby初級者向けレッスン 53回 ─── Array と Hash
Ruby初級者向けレッスン  53回 ─── Array と HashRuby初級者向けレッスン  53回 ─── Array と Hash
Ruby初級者向けレッスン 53回 ─── Array と Hash
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
 
textsearch_jaで全文検索
textsearch_jaで全文検索textsearch_jaで全文検索
textsearch_jaで全文検索
 
Ibisml2011 06-20
Ibisml2011 06-20Ibisml2011 06-20
Ibisml2011 06-20
 
Scala による自然言語処理
Scala による自然言語処理Scala による自然言語処理
Scala による自然言語処理
 
Haskell超入門 Part.1
Haskell超入門 Part.1Haskell超入門 Part.1
Haskell超入門 Part.1
 
Introduction of aws-cli
Introduction of aws-cliIntroduction of aws-cli
Introduction of aws-cli
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
 

Último

Último (12)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

R Language Definition 2.2 to 2.3

  • 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