まずは導入ということで、attach関数について説明する。attach関数を利用すると、detach関数を呼び出すまで、データフレームの列名を書くだけで、列を指定したことと同じになる。
> attach(iris)
> lm.obj <- lm(Sepal.Length~Sepal.Width) # iris[,"Sepal.Length"]などとしなくてもよい
> detach(iris)
> Sepal.Length # エラー
エラー: オブジェクト 'Sepal.Length' がありません
> lm.obj
Call:
lm(formula = Sepal.Length ~ Sepal.Width)
Coefficients:
(Intercept) Sepal.Width
6.5262 -0.2234
次にwith関数の定義を示す。
with(data, expr, ...)
with関数はdataから構成された環境で評価するというものであるが、言い換えると、with関数の内部に限ってexprはattach(data)としたのと同じになるということである。つまり、上の回帰分析のコードは次のように書くこともできる。
> lm.obj2 <- with(iris,lm(Sepal.Length~Sepal.Width)) > all.equal(lm.obj,lm.obj2) # 回帰分析で得られたオブジェクトを比較、一致している [1] TRUE
どちらを使うべきかという判断は難しいが、attach/detachを利用する場合は、attachしている最中にオブジェクト名を混同しないようにしなければならないことだけは間違いない。

0 件のコメント:
コメントを投稿