前回 データの種類のところでざっくりと説明したnew-env(環境)というデータの型について詳しく解説していきたいと思います。
前にも述べたように、この環境というデータの型はRでの計算処理のパフォーマンス向上にとても役に立つのでRで大規模な金融データを扱うときには必ずマスターしておきたいデータの型です。
この環境がどういう仕組みなのかというと、ベクトルやmatrixやdataframeが
> x<-c(1,2,3)
> x
[1] 1 2 3
というように変数で、オブジェクトを保存するのにたいして環境はオブジェクトの中身自体を保存するのではなく、オブジェクトの位置、つまりアドレスを保存しているのでデータを呼び出すときに、他のデータの型のようにデータをいちいちRの中からコピーして持ってくるのではなく、R内部のデータの場所を直接表示するだけなのでプログラムを組むとき環境を使うほうが他のデータの型を使うより処理が軽くなるのです。
例として簡単な環境データを作って操作していきます。
> sample<-new.env() #環境データの作成
リストオブジェクトと同じように名前と値の割り当ては[[]]演算子で行うことができます。
> sample"first"<-5
> sample"second"<-6
> sample$third<-7
そして環境データの特徴であり、わかりづらい点であるのがコンソールにそのままオブジェクト名を入力してもデータが表示されないことです。
試しに今作ったsampleというデータを呼び出してみると
> sample
<environment: 0x0acc3c6c>
わけのわからない数字が出てきますね、Rに慣れてないと、この時点でちょっとゲンナリするかもしれません。
これが何を表しているのかというと16進数であらわされたデータのアドレスです。中身を表示させるのはlsコマンドを使用します。(lはLの小文字です)
> ls(sample)
[1] "first" "second" "third"
環境は他のオブジェクトと異なり、オブジェクトを呼び出すごとにいちいちコピーされないので、複数の変数が同じ一環境を指していたときは一方を変更すると他方も変更されてしまうので扱いに注意です。
環境オブジェクトはR内部のデータを全て管理している .GlobalEnvという大元の環境があって、そのなかにnew-env()でミニ環境を定義しているイメージで、このnew-env()の中にオブジェクトを定義してassign()などで値を操作することもできます。
詳しく話すとまだまだ奥が深いのですが、私自身がまだ言葉でうまく説明できるほど理解が進んでいないのでこの辺で締めます。
パッケージ作る人向けのオブジェクトなのですが、当サイトで紹介している金融パッケージの一部の関数はこの環境オブジェクト内専用だったりするので、こういうデータの種類があるというくらいの一応理解は必要です。
環境内の引数や関数については自分の分析の中で今のところあんまり出番ないので、これから使うことがあれば備忘録も兼ねて書くかもしれません。