6

我正在编写一个函数,它接受两个变量,并在一组表示为单边公式的控件上分别对它们中的每一个进行回归。现在,我正在使用以下公式为其中一个回归制定公式,但感觉有点过时了:

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

这是一种方法:

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

update(right, left_2)

但我认为您必须将文本字符串粘贴在一起,或者使用替代品。据我所知,没有任何函数可以从两个单面公式(或类似等价物)创建一个双面公式。

于 2009-07-31T19:25:47.080 回答
1

我不确定update.formula(),但我已经使用了您在此处采用的粘贴文本并as.formula成功转换文本的方法。我的阅读help(update.formula)并没有让我认为您可以根据需要替换左侧。

最后,相信调度机制。如果您的对象是公式类型,update则只需调用优先于显式的update.formula.

于 2009-07-31T17:42:32.513 回答