这里有新手问题。我有一个名为dbdata
的列表。通常我会这样使用它:
myresults <- rlm(V001 ~ V002+V003, data=dbdata)
但是,我想让这些参考动态化。我需要这样的东西:
var1 <- "V001"
var2 <- "V002"
var3 <- "V003"
myresults <- rlm(var1 ~ var2+var3, data=dbdata)
我如何在rlm()
的上下文中引用变量?我想也许像eval()
,但那不起作用。
谢谢!
答案 0 :(得分:15)
一种解决方案是使用paste()
构建公式并将其转换为公式:
> ## your example plus some dummy data
> var1 <- "V001"
> var2 <- "V002"
> var3 <- "V003"
> dat <- data.frame(V001 = runif(10), V002 = runif(10), V003 = runif(10))
> f <- formula(paste(var1, "~", var2, "+", var3))
现在我们可以查看f
> f
V001 ~ V002 + V003
> class(f)
[1] "formula"
它确实是一个公式。我们现在可以将其作为第一个参数传递给rlm()
:
> require(MASS)
> mod <- rlm(f, data = dat)
> mod
Call:
rlm(formula = f, data = dat)
Converged in 8 iterations
Coefficients:
(Intercept) V002 V003
0.2725538 -0.1281576 0.1617250
Degrees of freedom: 10 total; 7 residual
Scale estimate: 0.251
HTH
答案 1 :(得分:3)
您可以使用reformulate
函数创建基于字符串的公式:
form <- reformulate(c(var2, var3), response = var1)
# V001 ~ V002 + V003
myresults <- rlm(form, data = dbdata)