R言語
for, if, while, repeat, switch, break といった構造化構文がある。自前の関数(手続き)を定義することができ、自前の二項演算子さえも定義することができる。関数は function 関数で生成する。次に、階乗を計算する自前の関数を生成し、toyfactorial として呼出しできるようにする例を示す。
上記は実用的ではないかもしれないが、関数のネスティング・再帰呼び出し・スコープの例として挙げた。R言語ではPascalやModula-2のように関数のネスティングが可能である。この例では、関数内部でさらに局所的な関数を生成し、f として参照している。スコープもPascal等と同様、辞書式で、関数 f の中ではその外側にある toyfactorial の変数が「見える」。f は局所変数なので、関数の外側に同じ名前の変数があっても影響を与えない。ただし、Rでは呼び出しスタックをさかのぼる動的スコープも実現可能である。
f の内部では自分の名前を参照することができないので、自分自身を再帰的に呼び出すために Recall 関数を用いている。
さて、上記の2つのベクトル f1, f2 の要素数は等しい。このような場合、リストをデータフレームに変換できる。
dfはデータフレーム型変数であり、各ROW(以下「行」)に「たま」「みけ」「ぽち」のラベルがつく。
もうすこし大きな表、例えば
を例えば「犬猫」という名前の変数にデータフレームとして付値(代入に相当)すると、その内容は
のように、本来のデータをよく表現するものとなっている。それだけでなく、「猫」「犬」「♀」「♂」などの文字データは内部的に因子ないしはカテゴリに変換されている。データフレームから特定のデータコラムを抽出するには 変数名$タグ名 、例えば、 犬猫$月齢 とする。特定のデータ行だけを抽出するには subset 関数または要素の指定 [ ] を用いる。例えば、
は「愛らしさ」の平均値を猫と犬の間でt検定する(この例では、p値 = 0.6537 となる)。