6

私は、2つの変数を受け取り、片側の数式として表される一連のコントロールでそれぞれを個別に回帰する関数を作成しています。現在、回帰の1つの式を作成するために以下を使用していますが、少しハッキングされているように感じます。

foo <- function(x, y, controls) {
    cl <- match.call()
    xn <- cl[["x"]]
    xf <- as.formula(paste(xn, deparse(controls)))
}

を使用してこれを実行したいのですupdate.formula()が、もちろんupdate.formula(controls, x ~ .)update.formula(controls, as.name(x) ~ .)機能しません。私は何をすべきですか?

4

2 に答える 2

5

1 つのアプローチを次に示します。

right <- ~ a + b + c
left <- ~ y 
left_2 <- substitute(left ~ ., list(left = left[[2]]))

update(right, left_2)

ただし、テキスト文字列を一緒に貼り付けるか、代替を使用する必要があると思います。私の知る限りでは、2 つの片側式 (または同様の式) から 1 つの両側式を作成する関数はありません。

于 2009-07-31T19:25:47.080 に答える
1

についてはわかりませんがupdate.formula()、ここでテキストを貼り付けて変換するというアプローチを使用してas.formula、過去に成功しました。を読んでhelp(update.formula)も、左辺を好きなように代用できるとは思えません。

最後に、ディスパッチメカニズムを信頼します。オブジェクトが式のタイプの場合はupdate、明示的なよりも優先されるものを呼び出すだけupdate.formulaです。

于 2009-07-31T17:42:32.513 に答える