在update.formula中使用函数参数

时间:2009-07-31 17:17:09

标签: r

我正在编写一个函数,该函数接受两个变量,并在一组控件上单独回归它们,表示为单侧公式。现在我正在使用以下内容制作其中一个回归的公式,但感觉有点黑客攻击:

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) ~ .)不起作用。我该怎么办?

2 个答案:

答案 0 :(得分:5)

这是一种方法:

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

update(right, left_2)

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

答案 1 :(得分:1)

我不确定update.formula(),但我使用了您在此处粘贴文本并在过去通过as.formula转换成功的方法。我对help(update.formula)的阅读并没有让我觉得你可以按照自己的意愿替代左手边。

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