2016-02-10現勤務先への転職を機に、20年近く使い続けた我が愛しのSASに別れを告げ、泣く泣くRに乗り換えたのであった。Editionを立ち上げると、もう懐かしくて仕方ないです。後ろめたい気分であった。先日ちょっと時間があいたので、刊行時に大枚はたいて買い込んだまま本棚に積んであったこの本に一通り目を通してみた。Wickhamによる有名な解説書。読みながら「おおお」と思ったり「へええ」と思ったりしたところをメモしておく。データ構造オブジェクトxがベクトルかどうかを判断したいとき、is.vector(x)はだめ。これは「xが名前以外の属性を持たない」ときにTRUEとなる関数なのである。そうそう、これに気が付いたときはあっけにとられた。なんでこんな名前にするかなあ。is.list(x)を使うべし、とのこと。因子型ベクトルは文字型ベクトルに比べてメモリ消費量が少なかったが、いまは変わらない。comment属性はprintされない。したとき、x["a"]はc(1,3)ではなく黙って1だけ返す。名前で絞るのって怖い。NA)だが、x[NA_real_]はNAである。アトミックベクトルxに対してx[[1]]とすると、x[1]と違って名前が消える。関数のsrcref属性にソースコードが入っている。「レキシカルスコープ」の「レキシカル」は、英語のlexicalではなく、コンピュータサイエンス用語の"lexing"(字句解析)に由来している。レキシカルスコープの4原則。(1)ネームマスキング。(2)名前から値を探す際のルールは値の型に関わらず同一だが、あきらかに関数っぽい名前の場合は例外で、関数しか探さない。(3)フレッシュスタート。関数が呼び出されるたびに新しい環境が生成される。(4)ダイナミックルックアップ。値が探されるのは関数が生成されたときではなく実行されたとき。