在update.formula中使用函数参数

bre*_*onk 5 r

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

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

我宁愿要做到这一点使用update.formula(),但当然update.formula(controls, x ~ .)update.formula(controls, as.name(x) ~ .)不起作用.我该怎么办?

had*_*ley 5

这是一种方法:

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

update(right, left_2)
Run Code Online (Sandbox Code Playgroud)

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