Rのモデル式(?)のドット(".")やマイナス("-")の解釈が良くわからない。
ドットは従属変数以外の全ての変数の意味で、マイナスは特定の変数を説明変数から除く意味だと思っていた。
以下の結果はその通りになっている。
> data(iris)
> colnames(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
> library(tree)
> tree(Species ~ Sepal.Width + Petal.Width, data=iris)
> tree(Species ~ . - Sepal.Length - Petal.Length, data=iris)
一方、NAだけからなるダミーのカラムを以下のように追加してみる。
> iris2 <- iris
> iris2$dummy <- rep(NA, nrow(iris2))
すると、
> tree(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data=iris2)
はちゃんとした結果になるが、以下はエラーになってしまう。
> tree(Species ~ . - dummy, data=iris2)
以下にエラー tree(Species ~ . - dummy, data = iris2) :
no observations from which to fit a model
関係ないカラムにNAが入っているだけで、その行が除外されてしまっており、全変数名を明示的に列挙するのとは明らかに違う振る舞いになってしまっている。
あまり使った事無いので全然知らないですが。
ただ、これって抽象化としてあまり綺麗な抽象化でないような気がしてしまう。