字符串作为R中的变量引用

Fug*_*gue 10 r

R新手问题在这里.我有一个名单dbdata.通常我会这样使用它:

myresults <- rlm(V001 ~ V002+V003, data=dbdata)
Run Code Online (Sandbox Code Playgroud)

但是,我想让这些参考动态化.我需要这样的东西:

var1 <- "V001"
var2 <- "V002"
var3 <- "V003"
myresults <- rlm(var1 ~ var2+var3, data=dbdata)
Run Code Online (Sandbox Code Playgroud)

我如何在上下文中引用变量rlm()?我想也许是这样的eval(),但那不起作用.

谢谢!

Rei*_*son 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))
Run Code Online (Sandbox Code Playgroud)

现在我们可以看看 f

> f
V001 ~ V002 + V003
> class(f)
[1] "formula"
Run Code Online (Sandbox Code Playgroud)

它确实是一个公式.我们现在可以将其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
Run Code Online (Sandbox Code Playgroud)

HTH