個人的には、必要なことが達成されれば、文字列を使用しても問題はないと思います。必要に応じて、独立変数と従属変数を指定するために、文字列ではなく式を入力として受け取るように関数を書き直すことができます。この場合、関数呼び出しは次のようになります。
fitmodel(x ~ y + z,data)
これではなく:
fitmodel("x",list("y","z"),data)
数式を使用すると、回帰で使用する変数の単純な代数的組み合わせを指定できますx ~ y + log(z)
。この方法を使用すると、数式で指定されたデータ フレームを呼び出して構築し、model.frame
この新しいデータ フレームを使用してアルゴリズムを実行できます。例えば:
> df<-data.frame(x=1:10,y=10:1,z=sqrt(1:10))
> model.frame(x ~ y + z,df)
x y z
1 1 10 1.000000
2 2 9 1.414214
3 3 8 1.732051
4 4 7 2.000000
5 5 6 2.236068
6 6 5 2.449490
7 7 4 2.645751
8 8 3 2.828427
9 9 2 3.000000
10 10 1 3.162278
> model.frame(x ~ y + z + I(x^2) + log(z) + I(x*y),df)
x y z I(x^2) log(z) I(x * y)
1 1 10 1.000000 1 0.0000000 10
2 2 9 1.414214 4 0.3465736 18
3 3 8 1.732051 9 0.5493061 24
4 4 7 2.000000 16 0.6931472 28
5 5 6 2.236068 25 0.8047190 30
6 6 5 2.449490 36 0.8958797 30
7 7 4 2.645751 49 0.9729551 28
8 8 3 2.828427 64 1.0397208 24
9 9 2 3.000000 81 1.0986123 18
10 10 1 3.162278 100 1.1512925 10
>